簡體   English   中英

在C ++中通過libxml2解析部分XML時過濾掉命名空間錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM