pugixml节点对象是否具有子节点数方法?我在文档中找不到它,必须按如下方式使用迭代器:
int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;
答案 0 :(得分:17)
没有内置函数可以直接计算;另一种方法是使用std::distance
:
size_t n = std::distance(xMainNode.children("name").begin(), xMainNode.children("name").end());
当然,这是子节点数量的线性关系;请注意,计算所有子节点的数量std::distance(xMainNode.begin(), xMainNode.end())
也是线性的 - 没有对子节点计数的恒定时间访问。
答案 1 :(得分:1)
您可以使用基于xpath搜索的表达式(但无效率保证):
xMainNode.select_nodes( "name" ).size()
答案 2 :(得分:0)
int children_count(pugi::xml_node node)
{
int n = 0;
for (pugi::xml_node child : node.children()) n++;
return n;
}