あなたのXMLファイルを考慮してください。お問い合わせの際:
doc.child("level1").child("level2").child("hero2");
をそれと同等です:
element1 = doc.child("level1").child("level2");
element = element1.child("hero2");
は見てみましょう:
pugi::xml_node element1 = doc.child("level1").child("level2");
// Element 1 gives you first node "level2"
// Element 2 does not have child ("hero2") so the call will return NULL
pugi::xml_node element2 = element1.child("hero2"); // element2 is NULL
// Element 2 has a child "hero1"
// So you can get it as:
pugi::xml_node element2child_hero1 = element1.child("hero1"); //
しかし、あなたは "HERO2" ではない "hero1" を取得したいです。
特定のファイルの解決策の1つを以下に示します。 ループのためのザ・「はHERO2」までのすべての兄弟を経由するが発見された:
int findHero2(const char *file)
{
pugi::xml_document doc;
if (!doc.load_file(file)) return -1;
pugi::xml_node level1 = doc.child("level1");
for (pugi::xml_node level2 = level1.first_child(); level2; level2 = level2.next_sibling())
{
pugi::xml_node node = level2.child("hero2");
if(node!=NULL)
{
// I have found "hero2" node
// ...
return 0; // success
}
}
return -2; // no "hero2"
}
出典
2016-06-09 19:52:43
sg7