Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi IXmlDocument Node kopieren (https://www.delphipraxis.net/185754-ixmldocument-node-kopieren.html)

sephraina 4. Jul 2015 13:24

IXmlDocument Node kopieren
 
Hallo Zusammen

Ich möchte gerne einen ganzen Knoten aus einem IXmlDocument Kopieren und ihn in ein Neues packen.

Bei DP fand ich diesen Post: http://www.delphipraxis.net/169717-x...-kopieren.html
nur ist der schon etwas älter... oder ich mach was grundsätzlich falsch. :?

Mein Ansatz (Natürlich alles vorher initialisiert / deklariert):
Delphi-Quellcode:
if myxml = nil then myxml := newXMLDocument else myxml.XML.Clear;
    myxml.LoadFromFile('C:\Users\xml.xml');  // Hier wird das 1. File geladen
    if xmlT = nil then xmlT := newXMLDocument else xmlT.XML.Clear; // hier wird das 2.File erzeugt
    rNode := xmlT.AddChild('Daten');    //rootnode des 2.Files
    tNode := rNode.AddChild('Probendaten');
   
    with myxml.DocumentElement do
         begin
          for y := 0 to ChildNodes.Count-1 do
              begin
                   iNode := childnodes[y];
                   for i := 0 to iNode.ChildNodes.Count-1 do
                   begin                                                   // ich vergleiche den Attributwert mit einem String (j). Wenn true soll der Knoten ins neue Dokument kopiert werden
                        if iNode.ChildNodes.Nodes[i].GetAttributeNS('TXT_Charge','') = j then
                        begin
                               
                               showmessage('iNode: nodename: '+iNode.ChildNodes.Nodes[i].XML);  // gibt mir den Knotennamen + Inhalt des gewünschten Knoten aus
                               
                               tNode.AddChild(iNode.ChildNodes.Nodes[i].cloneNode(True)); // <=== hier scheint mein Problem
                               
                               showmessage(xmlT.XML.Text);  // überprüfen ob der Knoten eingefügt wurde
                        end;


                   end;
              end;
            end;
Hoffe jemand hat eine Idee oder sieht grad den Fehler...

Gruss Sephraina

sephraina 4. Jul 2015 15:05

AW: IXmlDocument Node kopieren
 
Habs doch noch hinbekommen:

Einfach die Zeile die probleme machte ersetzen durch:

Delphi-Quellcode:
cloneN := iNode.ChildNodes.Nodes[i].cloneNode(True);
xmlT.DocumentElement.ChildNodes.Nodes[0].ChildNodes.Add(cloneN);
dann gehts :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz