Frage

empfangen A eine Zeichenfolge wie folgt aus:

<invoke name="CanClose" returntype="xml">
   <arguments>
       <string># 998.40</string>
       <number>49920</number>
   </arguments>
</invoke>

Ich möchte QDomDocument verwenden, um die Werte der Argumente geordneten Knoten durch ihren Index zu bekommen (Ich mag würde die Saiten ‚# 998,40‘ und ‚49920‘ in dem Beispiel extrahieren).

Das ist, was ich versucht:

QString argument(int index)
{
    QDomNode arg = xml->elementsByTagName("arguments").at(index);
    return arg.nodeValue();
}

Aber auch arg war leer. Was mache ich hier falsch?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

So scheint der Text in einem Knoten ist ein Knoten selbst auch. Dies ist, wie es funktioniert:

QString argument(int index)
{
    QDomNode arg = xml->firstChild().namedItem("arguments");
    return arg.childNodes().at(index).firstChild().nodeValue();
}

Andere Tipps

elementsByTagName () gibt eine Liste aller Knoten (Elemente tatsächlich) mit Tag-Namen „Argumente“ in den Knoten Teilbaum. .at () gibt eine jener „Argumente“ Elemente aus der Liste, ihre Kinder nicht. Wenn Sie die Kinder wollen, müssen Sie ihre jeweiligen childnodes iterieren ().

Diese Funktion gibt einen QDomNodList, aus dem es ein Element Funktion jeden Knoten zu erhalten (und eine Zählung zu wissen, wie viele es sind)

Von diesem mir der Code wahrscheinlich sagen würde, sollte

http://doc.trolltech.com/3.3/qdomdocument.html#elementsByTagName

http://doc.trolltech.com/3.3/qdomnodelist.html#item

QString argument(int index) 
{ 
    QDomNode arg = xml->elementsByTagName("arguments").item(index); 
    return arg.nodeValue(); 
}

Sie sollten wahrscheinlich überprüfen Sie die NodeList count, dass der Index innerhalb der Grenzen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top