XML Problem - Nodes von einem Dokument ins andere kopieren

Alles rund um die Programmierung mit Qt
Antworten
qrk123
Beiträge: 32
Registriert: 4. Dezember 2009 13:19

XML Problem - Nodes von einem Dokument ins andere kopieren

Beitrag von qrk123 »

Hallo,

ich habe in einem xml domdocument nodes zusammengefasst, die ich in ein anderes dokument hineinkopieren möchte. Sieht in etwa so aus:

Code: Alles auswählen

<nodes>
      <haus>
            <tür>bla</tür>
            <fenster>bla</fenster>
      </haus>
      <haus>
            <tür>blabla</tür>
            <fenster>blabla</fenster>
      </haus>
</nodes>
Diese beiden Häuser möchte ich einfügen in einem großen anderen Dokument im Tag "Straße".

Mein Ansatz geht wie in folgendem Code:

Code: Alles auswählen

QDomNode eltNodes = blabla.firstChildElement("nodes");
QDomNodeList listNodes = eltNodes.childNodes();
for (int l = 0; l < listNodes.length(); ++l) {
      eltStraße.appendChild(listNodes.at(l)); 
}
Wenn ich unter dem nodes-tag aus dokument1 nur ein Haus zum einfügen habe fügt er es problemlos ein. Habe ich mehrere Häuser, dann wird gar keines mehr eingefügt und der Tag "Straße" in Dokument2 bleibt leer.

Sieht jemand den Fehler oder kennt einen besseren Ansatz?

vielen Dank
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

Kopie erstellen

Beitrag von softwaremaker »

erstelle doch eine Kopie mit QDomNode::cloneNode und mit
QDomNode::appendChild fügst du die Kopien zum anderen Dokument hinzu.
qrk123
Beiträge: 32
Registriert: 4. Dezember 2009 13:19

Beitrag von qrk123 »

vielen Dank für deinen Hinweis! Ich benutze jetzt Clones und damit funktionierts.

Sieht so aus:

Code: Alles auswählen

QDomNode eltNodes = blabla.firstChildElement("nodes");
QDomNodeList listNodes = eltNodes.childNodes();
for (int l = 0; l < listNodes.length(); ++l) {
     QDomNode nodeClone = listNodes.at(l).cloneNode();
     eltStraße.appendChild(nodeClone); ///insert nodes
} 
Antworten