Pugixml количество дочерних узлов

Есть ли объект pugixml node метод число-дочерних узлов? Я не могу найти его в документации и должен был использовать итератор следующим образом:

int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;

Ответ 1

Нет встроенной функции для непосредственного вычисления; другой подход заключается в использовании std::distance:

size_t n = std::distance(xMainNode.children("name").begin(), xMainNode.children("name").end());

Конечно, это линейное число дочерних узлов; обратите внимание, что вычисление числа всех дочерних узлов std::distance(xMainNode.begin(), xMainNode.end()) также является линейным - нет постоянного доступа к дочернему счету node.

Ответ 2

Вы можете использовать выражение, основанное на поиске xpath (при этом не гарантируется эффективность):

xMainNode.select_nodes( "name" ).size()