2016-03-26 11 views
2

Wie hängt man ein neues untergeordnetes Element an einen Knoten an und platziert es vor dem ersten untergeordneten Element? Ich möchte versuchen, ein neues Kind anzuhängen und es in der Reihenfolge nach oben zu schieben.C++ pugiXML, Anfügen eines untergeordneten Elements vor dem ersten untergeordneten Element in einem Knoten

Sag mal, wenn ich:

pugi::xml_node root; 
pugi::xml_node level1 = root.append_child("Level1"); 
pugi::xml_node level2 = root.append_child("Level2"); 
pugi::xml_node level3 = root.append_child("Level3"); 

Kann ich anfügen irgendwie einen neuen Knoten, level4 und hat es vor dem level1 Knoten in der XML-Struktur?

Antwort

1

Jemand hat gerade zeigte prepend_child stattdessen zu tun. Trotzdem danke Galik für den Vorschlag.

1

Sie können root.insert_child_before("Level4", root.first_child()) verwenden.

Sein rater ungewöhnlich zu einem anderen Tag-Namen für jedes Kind obwohl. Ein gebräuchlicheres Format wäre es, die Kinder alle mit dem gleichen Namen zu versehen und die Attribute zu setzen, um sie voneinander zu unterscheiden.

Ein Beispiel, wie dies geschehen kann:

int main() 
{ 
    pugi::xml_document doc; 
    pugi::xml_node root = doc.append_child("levels"); 

    root.append_child("level").append_attribute("id").set_value("L01"); 
    root.last_child().append_child("description").text().set("Some L01 stuff"); 

    root.append_child("level").append_attribute("id").set_value("L02"); 
    root.last_child().append_child("description").text().set("Some L02 stuff"); 

    // now insert one before the first child 
    root.insert_child_before("level", root.first_child()).append_attribute("id").set_value("L00"); 
    root.first_child().append_child("description").text().set("Some L00 stuff"); 

    doc.print(std::cout); 
} 

Ausgang: mich

<levels> 
    <level id="L00"> 
     <description>Some L00 stuff</description> 
    </level> 
    <level id="L01"> 
     <description>Some L01 stuff</description> 
    </level> 
    <level id="L02"> 
     <description>Some L02 stuff</description> 
    </level> 
</levels> 
Verwandte Themen