Seite 1 von 1
QDomDocument verändert die Reihenfolge der XML-Attribute
Verfasst: 25. Juli 2008 12:27
von Delryn
Hallo!
Ich habe mit TinyXML einen std::string erstellt, der der XML-Daten enthält.
Wenn ich das ganze jetzt einem QDomDocument übergebe, und zwar so:
Code: Alles auswählen
m_DomDocument.setContent(QString(data.c_str()), true, &errorStr, &errorLine, &errorColumn)
dann verändert das DOmDocument einfach die Reihenfolge der Attribute!
Klar, zum auslesen ist das bei XML egal. Nur hab ich jetzt die Anforderung, dass die Einträge genau so gespeichert werden sollen, wie sie erstellt wurden, damit man die XML-Dateien später leichter editieren kann.
Gibt's da eine Möglichkeit

Verfasst: 25. Juli 2008 12:49
von VuuRWerK
Selbst einem späteren bearbeiten des XML ist die Anordnung der Attribute egal. Du hast keinerlei Vorteile davon wenn die Attribute immer gleich angeordnet sind.
Gut Schuß
VuuRWerK

Verfasst: 25. Juli 2008 13:04
von Delryn
VuuRWerK hat geschrieben:Selbst einem späteren bearbeiten des XML ist die Anordnung der Attribute egal. Du hast keinerlei Vorteile davon wenn die Attribute immer gleich angeordnet sind.
Gut Schuß
VuuRWerK

Wie geschrieben
Klar, zum auslesen ist das bei XML egal. Nur hab ich jetzt die Anforderung, dass die Einträge genau so gespeichert werden sollen, wie sie erstellt wurden, damit man die XML-Dateien später leichter editieren kann.
Ich hab also doch einen Vorteil! Beim Editieren im Editor!
Verfasst: 25. Juli 2008 15:46
von upsala
Wir hatten dieses Thema schon mal: Nein, es ist nicht möglich.
Verfasst: 25. Juli 2008 18:54
von Delryn
hm gibt's denn wenigstens die Möglichkeit zwei QDomDocuments zu "mergen", sprich zusammenzuführen?
Ich finde nur die Methode appendChild wobei
If newChild is a QDomElement and this node is a QDomDocument that already has an element node as a child, newChild is not added as a child and a null node is returned.
nichts gutes verheißt.
Also ein DomDocument enthält z.b. sowas:
Code: Alles auswählen
<configuration>
<Version id="VersionXXX" />
<object name="Subject1">
<object name="Tiefer1" />
</object>
</configuration>
Ein anderes
Code: Alles auswählen
<configuration>
<Version id="VersionXXX" />
<object name="Subject1">
<object name="Tiefer2" />
</object>
<object name="Subject3" />
</configuration>
und rauskommen soll im neuen DomDocument
Code: Alles auswählen
<configuration>
<Version id="VersionXXX" />
<object name="Subject1">
<object name="Tiefer1" />
<object name="Tiefer2" />
</object>
<object name="Subject3" />
</configuration>
(also alles enthalten, das was war, das was neu ist)
Geht das?
Verfasst: 28. Juli 2008 08:18
von VuuRWerK
Nochmal kurz ein Statement zum editieren im Editor, auch einem Editor ist es Jacke wie Hose in welcher Reihenfolge die Attribute kommen, kurz: Es ist einfach egal!
Dann noch zum "mergen": Nimm die zwei Dokumente, lies sie ein, vergleiche die Nodes und Attribute von dem einem Doc mit dem anderen und erstelle ein neues mit den Nodes und Attributen und fertig.
Gut Schuß
VuuRWerK
