gpt4 book ai didi

c++ - rapidxml:如何遍历节点?遗漏了最后一个 sibling

转载 作者:可可西里 更新时间:2023-11-01 18:11:37 27 4
gpt4 key购买 nike

我想使用 rapidxml 遍历一组节点,并使用我发现的最佳方法(来自可信赖的 stackoverflow,该文档似乎没有迭代示例):

while (curNode->next_sibling() !=NULL ) {
string shiftLength = curNode->first_attribute("shiftLength")->value();
cout << "Shift Length " << "\t" << shiftLength << endl;
curNode = curNode->next_sibling();
}

不幸的是,在我的 OSX 10.6 上,这遗漏了最后一个兄弟节点 - 我猜是因为在循环的最后一次迭代中,next_sibling 被调用了两次。如果我在循环之后写,我可以到达最后一个节点:

cout << " LAST IS: " << curNode->first_attribute("shiftLength")->value();

...但这很不可靠,程序会在此时退出。

第一个问题:这可能是我的设置 (OSX 10.6) 的一个独特缺陷,还是我编码错误?

第二个问题:有没有人举例说明他们认为使用 rapidxml 遍历未知数量的 XML 节点的正确方法?

谢谢大家

皮特

最佳答案

这是在 rapidxml 中遍历节点的所有子节点的正确方法:

xml_node<> *node = ...
for (xml_node<> *child = node->first_node(); child; child = child->next_sibling())
{
// do stuff with child
}

关于c++ - rapidxml:如何遍历节点?遗漏了最后一个 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com