pugixml子节点数

lsd*_*ies 13 size count xml-parsing pugixml

pugixml节点对象是否具有多个子节点方法?我在文档中找不到它,并且必须使用迭代器,如下所示:

int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;
Run Code Online (Sandbox Code Playgroud)

zeu*_*xcg 17

没有内置函数可以直接计算; 另一种方法是使用std::distance:

size_t n = std::distance(xMainNode.children("name").begin(), xMainNode.children("name").end());
Run Code Online (Sandbox Code Playgroud)

当然,这是子节点数量的线性关系; 请注意,计算所有子节点的数量std::distance(xMainNode.begin(), xMainNode.end())也是线性的 - 没有对子节点计数的恒定时间访问.

  • 注意:这是pugixml的作者. (7认同)