使用 libxml2 计算节点的子节点数

发布于 2024-12-15 15:50:51 字数 443 浏览 1 评论 0原文

我使用的是 libxml2 版本 2.6.32,它没有函数 xmlChildElementCount 所以我编写了我的自定义函数,如下所示

int child_node_count(const xmlNodePtr nodePtr){
    register int i = 0;
    for(xmlNodePtr node = nodePtr->children;node;node = node->next,i++);
    return i --;
}

现在当我以这种方式有一个节点 somevalue我原本期望该函数返回 0 个计数,但我得到的计数为 1 这是我的代码中的错误还是某个值实际上是<节点>。 (我不知道 libxml2 如何将 XML 表示为 )

I'm using libxml2 version 2.6.32 which doesn't have function xmlChildElementCount so I wrote my custom function which is given below

int child_node_count(const xmlNodePtr nodePtr){
    register int i = 0;
    for(xmlNodePtr node = nodePtr->children;node;node = node->next,i++);
    return i --;
}

Now when I've a node in this fashion <node>somevalue</node> I was expecting the function to return 0 count but I'm getting count as 1 is this a mistake in my code or somevalue is really a child of <node>. (I don't know how libxml2 represents XML as )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爺獨霸怡葒院 2024-12-22 15:50:51

是的,somvalue 确实是一个节点 - XML_TEXT_NODE 类型的节点。有关您可能遇到的节点类型的完整列表,请参阅此处: http://www .xmlsoft.org/html/libxml-tree.html#xmlElementType

您可能正在寻找 xmlChildElementCount ?请参阅:http://www.xmlsoft.org/html/libxml-tree.html #xmlChildElementCount

Yes, somvalue really is a node - a node of type XML_TEXT_NODE. See here for a complete list of types of nodes you may encounter: http://www.xmlsoft.org/html/libxml-tree.html#xmlElementType.

You might be looking for xmlChildElementCount ? See: http://www.xmlsoft.org/html/libxml-tree.html#xmlChildElementCount

这个俗人 2024-12-22 15:50:51

为了匹配官方 xmlChildElementCount 的行为,您应该仅在 node->type == XML_ELEMENT_NODE 时增加计数器,这样您就不会计算文本节点和其他类型的非节点。 -元素节点。

您还应该接受非常量 xmlNodePtr 参数,并在 nodePtr == NULL 时返回 0

To match the behaviour of the official xmlChildElementCount you should only increment the counter when node->type == XML_ELEMENT_NODE so you don't count text nodes and other types of non-element node.

You should also accept non-const xmlNodePtr arguments and return 0 if nodePtr == NULL

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文