14

pugixmlノードオブジェクトにはnumber-of-child-nodesメソッドがありますか?ドキュメントでそれを見つけることができず、次のようにイテレータを使用する必要がありました。

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

3 に答える 3

21

それを直接計算する組み込み関数はありません。もう1つのアプローチは、次を使用することstd::distanceです。

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

もちろん、これは子ノードの数に比例します。std::distance(xMainNode.begin(), xMainNode.end())すべての子ノードの数 の計算も線形であることに注意してください。子ノード数への一定時間のアクセスはありません。

于 2013-01-15T05:26:01.360 に答える
3

xpath 検索に基づく式を使用できます (ただし、効率は保証されません)。

xMainNode.select_nodes( "name" ).size()
于 2013-01-28T19:09:49.260 に答える