首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libxml -遍历子对象的所有子对象

libxml -遍历子对象的所有子对象
EN

Stack Overflow用户
提问于 2011-03-31 16:48:45
回答 1查看 3.2K关注 0票数 1

我是libxml的新手。我想写一个循环来遍历一个子节点的所有子节点,等等。

<par>i want to <bold>loop <italic>through </italic> all</bold> children in this node</par>

目前,我的循环代码如下所示,但我只得到了“粗体”节点,而没有“斜体”子节点。

代码语言:javascript
复制
    if (xmlStrEqual(node->name, BAD_CAST "p")) {

    xmlNodePtr child = node->children;

        while (child != NULL) {

            child = child->next;
        }
    }

可以想象,节点结构可以增长到4-5个元素,所以我需要一个更健壮的解决方案,将while循环放在while循环中。如果有任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-09 11:46:52

您正在使用的xmlTree接口是层级式的。有3个子元素-之前的文本,本身和之后的文本。具有自己的子级,其中包括。node->children列表只包含节点的直接子节点。

有几种方法可以获得您想要的行为。

  • 在处理子节点时,您可以递归地处理

->子节点以获取其子节点,其中包括

  • 如果您要专门查找该子节点(或一组特定节点),则可以使用XPath表达式,例如" par // italic“来查找par下的任何斜体节点。libxml2可以查看libxml2的xmlTextReader接口,而不是此xmlTree。它提供了您所期望的文档的序列”通读“。http://xmlsoft.org/xmlreader.html

每种方法都有自己的优点/缺点,这取决于您想要对应用程序做什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5497301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档