我遇到了libxml2(版本2.7.8.13)的問題。 我正試圖轉儲節點,同時用xmlTextReaderPtr閱讀器解析內存中的文檔。libxml2:使用xmlNodeDump轉儲節點時丟失子節點()
因此,在解析給定的節點時,我使用xmlNodeDump()獲取其全部內容,然後切換到下一個節點。 這是我如何着手:
[...]
// get the xmlNodePtr from the text reader
node = xmlTextReaderCurrentNode(reader);
// allocate a buffer to dump into
buf = xmlBufferCreate();
// dump the node
xmlNodeDump(buf, node->doc, node, 0 /* level of indentation */, 0 /* disable formatting */);
result = strdup((char*)xmlBufferContent(buf));
這在大多數情況下,但有時結果是缺少從解析節點有些孩子。例如,整個內存的XML文檔包含
[...]
<aList>
<a>
<b>42</b>
<c>aaa</c>
<d/>
</a>
<a>
<b>43</b>
...
</aList>
,我得到的東西,如:
<aList>
<a>
<b>42</b>
</c>
</a>
</aList>
結果以及形成,但它缺乏一些數據!一大堆孩子已經「消失」了。 xmlNodeDump()應該遞歸地轉儲所有的子項。
它看起來像某種尺寸限制。 我想我做錯了什麼,但我無法弄清楚什麼。
謝謝你的回答。
結果不是完整的,它有一個關閉沒有開放。請提供一段示例代碼和它解析的XML內容,以顯示問題(而不是每個摘要的摘要),並且我們可以確定發生了什麼。 –
謝謝你評論我的問題。 當我說結果是格式良好時,我的意思是任何打開的標籤都是關閉的。我特意寫了,因爲在我的情況下,libxml2在輸入上做了這樣的事情:某些數據被清除,而不是有 blabla 我得到。 代碼的精神在那裏,如果你需要一些確切的信息,請問我,但我不明白什麼是相關的。 –
user2485337
哎呀我做錯了,它是 ,對不起,關於那 –
user2485337