使用 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 节点的正确方法的示例?
多谢你们
皮特