Lassen Sie uns sagen, dass wir das folgende XML-Dokument haben:Converting QDomElement zu QString/Container-Klasse
<root>
<options>
...
</options>
<children>
<child name="first">12345</child>
<child name="second">
<additionalInfo>abcd</additionalInfo>
</children>
</root>
Ich möchte eine String-Repräsentation der „Kind“ Knoten erhalten und sie in ein Array anhängen (I don‘ Ich möchte die XML-Syntax verlieren, also ist .text() keine Option). Zum Beispiel würde das erste Kind wie folgt aussehen:
QString child = "<child name="first">12345</child>";
ich den folgenden Code verwendet, um die Elemente zu erhalten:
QDomDocument doc;
QDomElement element;
element = xml->documentElement();
if(element.isNull() == false)
{
element = element.firstChildElement("children");
if(element.isNull()) return;
element = element.firstChildElement("child");
while(element.isNull() == false)
{
doc = element.toDocument();
if(doc.isNull() == false)
{
// save string into array
array.append(doc.toString());
}
element = element.nextSiblingElement("child");
}
}
Das Problem ist, dass die doc.isNull immer false zurück (sieht aus wie ich Ich kann das Element nicht in Dokument konvertieren). Gibt es eine Möglichkeit, wie ich das ausführen kann?
Edit:
Ich mag würde, dass QString hinzuzufügen, ist hier nicht zwingend notwendig. Grundsätzlich ist jede Klasse, die später zum Abrufen der Daten verwendet werden kann, in Ordnung (ich speichere diese Knoten und benutze sie später, um weitere Objekte zu initialisieren). Wichtig ist, dass ich auf diese Werte auch dann zugreifen kann, wenn das Originaldokument zerstört wurde. Beispielsweise ist es möglich, diese Elemente direkt in einem Array zu speichern (z. B. QList), auf die später zugegriffen werden kann.
Was ist mit der entgegengesetzten Operation? Gegeben die Zeichenfolge generieren einen QDomNode, der später an ein vorhandenes QDomDocument angefügt werden kann? – Pierluigi
@Pierluigi, das sollte eine Frage für sich sein. Es ist ziemlich involviert. Sie erstellen ein 'QDomDocument', verwenden' setContent() 'und verwenden dann' QDomDocumentFragment', um das Ergebnis in ein anderes Dokument zu kopieren ... –
Kommentar/* = 4 * ist nicht geschlossen. Also hier Syntaxis Fehler. –