我有去大致是這樣的XML文件:空元素造成的libxml段錯誤
<root>
<children>
<child />
</children>
<otherchildren>
</otherchildren>
<morechildren>
<child />
</morechildren>
</root>
及這裏的分析它的C:
doc = xmlDocPtr;
doc = xmlParseFile(file);
cur = xmlNodePtr;
cur = xmlDocGetRootElement(doc);
cur = cur->xmlChildrenNode;
while (cur != NULL){ // Loop through children of root
// Do my thing
cur = cur->next;
}
當的xmlNodePtr來otherchildren,因爲有沒有內容,下一個節點(文本節點)是NULL
這給了我一個問題,與我的循環混亂,並以某種方式導致段錯誤。
我該如何解決這個問題,而不是明顯的if語句?在otherchildren
下面有更多的xml,如果循環退出,我不能得到它。
如果您使用 ,該怎麼辦?不知道這是否在你的情況下是可能的。 –
Gerben
2011-05-01 11:33:40
不,總的來說,其他孩子應該擁有元素,但有時候它不會,我的程序需要處理這個問題。 – 2011-05-01 12:46:12
我不明白你在做什麼,不認爲這是有道理的。 XML不是一個列表,而是一棵樹。你不能通過在每一步跟隨一個「下一個」指針來走它。您需要能夠備份樹,可以使用遞歸或追蹤您的位置來備份。 – 2011-05-01 14:06:38