2017-11-24 3 views
0

Nur eine kurze Frage. Sorry, wenn es einfach ist, habe ich versucht zu googeln, aber nichts nützliches bekommen. Hier ist meine Abfrage. ich habe 2 LXML etree, PFB XML-1:Anhängen des übergeordneten Elements zusammen mit seinen untergeordneten Tags an new etree mit lxml

<?xml version="1.0" encoding="UTF-8"?> 
<parent> 
    <child c="1"> 
     <e1>abc</e1> 
     <e2>abc</e2> 
     <e3>abc</e3> 
     <e4> 
     <e41>xyz</e41> 
     <e41>zyx</e41> 
     </e4> 
    </child> 
    <child c="2"> 
     <e1>abc</e1> 
     <e2>abc</e2> 
     <e3>abc</e3> 
     <e4> 
     <e41>xyz</e41> 
     <e41>zyx</e41> 
     </e4> 
    </child> 
</parent> 

XML-2:

<?xml version="1.0" encoding="UTF-8"?> 
<parent> 
    <child c="3"> 
     <e1>abc</e1> 
     <e2>abc</e2> 
     <e3>abc</e3> 
     <e4> 
     <e41>xyz</e41> 
     <e41>zyx</e41> 
     </e4> 
    </child> 
</parent> 

ENDERGEBNIS:

<?xml version="1.0" encoding="UTF-8"?> 
<parent> 
    <child c="3"> 
     <e1>abc</e1> 
     <e2>abc</e2> 
     <e3>abc</e3> 
     <e4> 
     <e41>xyz</e41> 
     <e41>zyx</e41> 
     </e4> 
    </child> 
    <child c="1"> 
     <e1>abc</e1> 
     <e2>abc</e2> 
     <e3>abc</e3> 
     <e4> 
     <e41>xyz</e41> 
     <e41>zyx</e41> 
     </e4> 
    </child> 
</parent> 

Jetzt möchte ich XML-2 mit "anhängen Kind c = '1' "Element mit seinen untergeordneten Elementen aus XML-1. Richtig, ich durchlaufe sein Kind und angehängt XML-2. Gibt es eine Möglichkeit, XML-2 ohne Schleifen anzuhängen? ich meine auf einmal. Danke im Voraus. Frag mich nicht, was ich versucht habe. Mein aktueller Code (Durchschleifen von Elementen) funktioniert einwandfrei. Und ich bin mir nicht sicher, auch wenn es möglich ist.

+0

Post das Endergebnis – RomanPerekhrest

+0

@RomanPerekhrest Just added wie das Endergebnis aussehen soll. – Arasan

+0

* (Durchschleifen von Elementen * - keine Schleife nötig, nur 'Finde' Methode – RomanPerekhrest

Antwort

0

Egal Jungs, gerade über Deepcopy gefunden.

Wenn Sie ein Element in eine andere Position in lxml.etree kopieren möchten, sollten Sie eine unabhängige tiefe Kopie der Erstellung der Kopie-Modul von Python Standard-Bibliothek:

>>> from copy import deepcopy 

>>> element = etree.Element("neu") 
>>> element.append(deepcopy(root[1])) 
Verwandte Themen