小编Pet*_*233的帖子

rapidxml:如何遍历节点?留下最后的兄弟姐妹

使用rapidxml我想循环遍历一组节点,并且使用我发现的最好的方法(从可靠的stackoverflow,doc似乎没有迭代的例子):

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

不幸的是,在我的OSX 10.6 上,这就省去了最后一个兄弟节点 - 我想因为在循环的最后一次迭代中,next_sibling被调用了两次.如果我在循环之后写,我可以得到最后一个节点:

cout << " LAST IS: " << curNode->first_attribute("shiftLength")->value();
Run Code Online (Sandbox Code Playgroud)

......但那很狡猾,程序就此退出.

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

第二个问题:有没有人有一个他们认为使用rapidxml迭代未知数量的XML节点的正确方法的例子?

多谢你们

皮特

c++ iterator rapidxml

7
推荐指数
3
解决办法
9941
查看次数

标签 统计

c++ ×1

iterator ×1

rapidxml ×1