Wie man die Attribute von einem Knoten in libxml2
Ich arbeite gerade an einem parser der die Daten aus einer XML-Datei. Ich bin mit libxml2-Daten zu extrahieren. Ich bin nicht in der Lage, um die Attribute von Knoten. Ich fand nur nb_attributes
um die Anzahl der Attribute.
InformationsquelleAutor kiri | 2009-07-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke joostk bedeutete, Attribut->die Kinder, was so etwas wie dies:
Sehen, ob das funktioniert für Sie.
Sie iterieren über die Knoten auf die gleiche Weise Durchlaufen Attribute: Knoten = Knoten->weiter.
InformationsquelleAutor Matthew Lowe
wenn Sie wollen einfach nur ein einzelnes Attribut, verwenden Sie xmlGetProp oder xmlGetNsProp
InformationsquelleAutor Bevan Collins
Ich glaube, ich fand, warum Sie bekam nur 1 Attribut (zumindest ist es mir passiert).
Das problem war, dass ich gelesen Attribute zum ersten Knoten, aber weiter ist ein text-Knoten. Weiß nicht warum, aber Knoten->Eigenschaften gibt mir einen Verweis auf eine nicht lesbare Teil des Speichers, so dass es abgestürzt ist.
War meine Lösung zu überprüfen Knotentyp (element 1)
Ich bin mit einem reader, also:
Den gesamten code, den Sie können es von http://www.xmlsoft.org/examples/reader1.c und fügen Sie diese
zur Linie 50.
InformationsquelleAutor tiparega
Probieren Sie etwas wie:
Sollte nicht
node-children
gewordenattribute->children
?Ja, es sollte 🙂 siehe Auch @Matthew Lowe, bemerkte er den Fehler früher. Ich habe aktualisiert die Antwort (2.5 Jahre später ;))
InformationsquelleAutor Joost
Wenn Sie SAX-Methode startElementNs(...), diese Funktion ist das, was du suchst:
Verwendung:
InformationsquelleAutor Petr
Der einfachste Weg ich gefunden mit libxml2 (durch libxml++ in C++) zu nutzen, um die
eval_to_XXX
Methoden. Sie bewerten einen XPath-Ausdruck, so müssen Sie die@property
syntax.Beispiel:
return std::string(dynamic_cast<const xmlpp::Element*>(node)->get_attribute_value("property"))
. Auch Ihre parameter Erklärung ist seltsam: Sie erklärennode
als eine Referenz auf einen const-Zeiger auf non-constxmlpp::Node
. Sinnvoller wäre:const xmlpp::Node *node
InformationsquelleAutor Martín Coll