QDomDocument verändert die Reihenfolge der XML-Attribute

Alles rund um die Programmierung mit Qt
Antworten
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

QDomDocument verändert die Reihenfolge der XML-Attribute

Beitrag 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 :?
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag 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 ;)
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag 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!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wir hatten dieses Thema schon mal: Nein, es ist nicht möglich.
Delryn
Beiträge: 70
Registriert: 24. Februar 2006 11:15

Beitrag 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?
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag 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 ;)
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
Antworten