【发布时间】:2011-11-16 04:06:33
【问题描述】:
我使用的是 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 --;
}
现在,当我以这种方式<node>somevalue</node> 拥有一个节点时,我期待函数返回 0 个计数,但我得到计数,因为 1 这是我的代码中的一个错误,或者 somevalue 确实是 <node> 的一个孩子. (我不知道 libxml2 如何将 XML 表示为)
【问题讨论】:
-
我认为你在这里传递根节点的指针..最好你传递你的期望节点的指针来计算它的子节点..
-
我传递了
<node>标签本身的指针,它仍然返回计数,可能是代码错误,但我无法弄清楚:( -
你为什么要注册?你为什么要递减我?否则代码很好..可能是 libxml2 代码中误解了一些东西
-
注册只是为了让它更快(可能不是必需的,但实际上我的代码中有漏洞,我应该返回
--i而不是i--:) 递减因为i将增加一超过现有节点数