[英]Filtering out namespace errors when parsing partial XML via libxml2 in C++
我需要解析部分XML片段(以std :: string表示),例如:
<FOO:node>val</FOO:node>
作为libxml2中的xmlDoc
对象,并且因为这些是片段,我不断得到namespace error : Namespace prefix FOO on node is not defined
错误吐出到STDERR中。
我正在寻找的是一种方法来过滤这些命名空间警告或直接将XML片段解析为xmlNode
对象。
我认为使用initGenericErrorDefaultFunc()进行某种攻击可能是为了第一种方式,但libxml2的文档绝对是残酷的。
我坦率地倾向于采用第二种方法,因为它不需要错误黑客攻击,并且节点已经知道命名空间,但我不认为这是可能的,因为节点必须有根,并且不保证XML片段只有一个根。
我只需要一些如何摆脱命名空间错误警告的指导。
非常感谢你。
建立在@Potatoswatter所说的......你能为片段创建一个上下文吗? 例如连接
<dummyRoot xmlns:FOO="dummy-URI">
在你的片段前面,和
</dummyRoot>
然后,将连接的字符串传递给xmlParseMemory()。
或者,为什么不使用xmlParseInNodeContext(),它允许您传入一个节点以用作上下文(包括命名空间),并且内容可以是任何Well Balanced Chunk(例如,没有单个根元素的多个元素)。
这两种方法都要求您知道或者可以扫描以找出片段可能使用的所有可能的名称空间前缀的集合。
是不是将xmlParserOptions XML_PARSE_NOERROR
和/或XML_PARSE_NOWARNING
传递给解析器?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.