0 Pluspunkte 0 Minuspunkte

Ich habe ein XML Dokument

<articles>
    <article id="1">Hello</article>
    <article id="2">World</article>
</articles>

und möchte es mit PugiXML anzeigen.

pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file(src.c_str());

if (!result) 
    std::cout << "No doc\n";

pugi::xpath_node_set articles = doc.select_nodes("/articles/article");

for (pugi::xpath_node node: articles)
{

     pugi::xml_node article = node.node();
     std::cout << "article has id " << article.attribute("id").as_int() << " and " << article.value() << "\n";

}

Wie kann ich den Text anzeigen der im XML zwischen den Tags steht? article.value() gibt nichts aus.

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Die Methode article.value() gibt den Textwert des aktuellen Knotens zurück, wenn er selbst ein Textknoten ist. Wenn der Knoten ein Elementknoten ist (wie <article>), ist value() leer, da ein Elementknoten selbst keinen direkten Textwert hat. Stattdessen hat ein Elementknoten normalerweise Kindknoten, und der Textinhalt wird als Kindknoten gespeichert.

std::cout << "article has id " << article.attribute("id").as_int() << " and " << article.child_value() << "\n";
von (566 Punkte)