Konvertieren von QDomElement in die QString / Container-Klasse

8

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.

    
Routa 14.07.2010, 08:27
quelle

3 Antworten

12

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%     
Routa 27.07.2010, 06:38
quelle
0

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

teilen %Vor%

Nun entspricht jeder Index jeder Zeile in der XML-Datei. Sie können hindurchgehen und die gewünschten Zeilen erhalten.

Ich hoffe, es hilft ...

    
liaK 14.07.2010 09:15
quelle
0

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%     
smerlin 14.07.2010 10:15
quelle

Tags und Links