空元素导致 libxml 段错误
我有一个 xml 文件,大致如下:
<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,如果循环退出我就无法获取它。
I have an xml file that goes roughly like this:
<root>
<children>
<child />
</children>
<otherchildren>
</otherchildren>
<morechildren>
<child />
</morechildren>
</root>
And here's the C that parses it:
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;
}
When the xmlNodePtr comes to otherchildren, because there are no contents, the next node (the text node) is NULL
This gives me a problem, messes with my loop, and causes a segfault somehow.
How do I fix this other than the obvious if statement? There is more xml below otherchildren
and I can't get it if the loop exits.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用您的 .xml,我得到:
(Speicherzugriffsfehler = 内存错误)
将 .xml 更改为
:
看起来您的代码比您的 xml 更好。
Using your .xml, I get:
(Speicherzugriffsfehler = memory fault)
Changing the .xml to
gives:
Looks like your code is better than your xml.