pugixml количество дочерних узлов
имеет ли объект узла pugixml метод числа дочерних узлов? Я не могу найти его в документации и должен был использовать итератор следующим образом:
int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;
2 ответов
нет встроенной функции для вычисления этого напрямую; другой подход-использовать std::distance
:
size_t n = std::distance(xMainNode.children("name").begin(), xMainNode.children("name").end());
конечно, это линейно по числу дочерних узлов; обратите внимание, что вычисление числа всех дочерних узлов,std::distance(xMainNode.begin(), xMainNode.end())
, также линейно - нет постоянного доступа к подсчету дочерних узлов.
вы можете использовать выражение, основанное на поиске xpath (однако нет гарантий эффективности):
xMainNode.select_nodes( "name" ).size()