Nehmen wir an, wir haben das folgende XML-Dokument:
%Vor%Ich möchte eine String-Repräsentation der "untergeordneten" Knoten bekommen und sie an ein Array anhängen (ich möchte die XML-Syntax nicht verlieren, also ist .text () keine Option). Zum Beispiel würde das erste Kind aussehen wie:
%Vor%Ich habe den folgenden Code verwendet, um die Elemente zu erhalten:
%Vor%Das Problem ist, dass doc.isNull immer false zurückgibt (sieht so aus, als könnte ich das Element nicht in ein Dokument konvertieren). Gibt es eine Möglichkeit, wie ich das ausführen kann?
Bearbeiten:
Ich möchte hinzufügen, dass QString hier nicht obligatorisch ist. 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 (z. B. QList) zu speichern, um später darauf zuzugreifen.
Ich werde eine Antwort auf meine eigene Frage hinzufügen. Keine Ahnung warum, aber sieht so aus als hätte ich die folgende Funktion in der Dokumentation verpasst.
void QDomNode :: save (QTextStream & amp; str, int indent) const
Es macht so ziemlich alles, was ich brauche, um einen Knoten in eine Zeichenfolge umzuwandeln, z. B .:
%Vor% Da Sie das XML-Format selbst benötigen, brauchen Sie nicht QDomElement
oder QDomDocument
. QDomElement
und QDomDocument
werden verwendet, um die in den XML-Dokumenten gespeicherten Daten zu erhalten.
Sie brauchen nur eine gewöhnliche Dateiübergabe.
Öffnen Sie die Datei mit
%Vor%Sie können den gesamten Inhalt der Datei mit
lesen %Vor% Sie können es einem QString
zuweisen.
z.B.,
%Vor% Dann können Sie den gesamten Inhalt basierend auf newline \n
-Zeichen mit
Nun entspricht jeder Index jeder Zeile in der XML-Datei. Sie können hindurchgehen und die gewünschten Zeilen erhalten.
Ich hoffe, es hilft ...
Nun, ich denke, Sie können mit den Qt XML-Klassen nicht genau das tun, was Sie wollen, aber es sollte möglich sein, die Zeichenfolge einfach selbst zu rekonstruieren (vielleicht nicht 100% passend, aber mit der gleichen Bedeutung), basierend auf Methoden die Qt XML-Klassen bereitstellen.
BEARBEITEN: Kleines Code-Snippet, das das Ding (ungetestet) machen könnte:
%Vor%