Seite 1 von 1

XML Problem - Nodes von einem Dokument ins andere kopieren

Verfasst: 8. Oktober 2010 14:39
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

Kopie erstellen

Verfasst: 8. Oktober 2010 14:51
von softwaremaker
erstelle doch eine Kopie mit QDomNode::cloneNode und mit
QDomNode::appendChild fügst du die Kopien zum anderen Dokument hinzu.

Verfasst: 8. Oktober 2010 15:03
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
}