2016-11-02 5 views
1

Ich verstehe, dass das Hinzufügen eines Unterelements mit getan werden kann, und dass ein verschachteltes Unterelement eingefügt werden kann durch sequenzielles Ersetzen der Eltern bis hin zum Stamm - hovewever gibt es eine Funktion oder eine Methode zu tun dies ohne die genannten Elternteile? das heißtlxml - Einfügen verschachtelt Element

>>> et.tostring(el) 
>>>> 
""" 
<b> 
    <c/> 
    <c/> 
    <d> 
     <e/> 
      <p> 
       <a> 
        <q/> 
        <q/> 
       <a/> 
      </p> 
     <e/> 
    <d> 
    <c/> 
    <c/> 
<b> 
""" 
>>>> new = insert_nested_child_element(el, "./d/e/p/a", 3, et.Element('new')) 
>>>> et.tostring(new) 
""" 
<b> 
    <c/> 
    <c/> 
    <d> 
     <e/> 
      <p> 
       <a> 
        <q/> 
        <q/> 
        <new/> 
       <a/> 
      </p> 
     <e/> 
    <d> 
    <c/> 
    <c/> 
<b> 
""" 
+0

Könnten Sie bitte Probe XMLs vor und nach der zu Demonstrationszwecken hinzufügen? Vielen Dank. – alecxe

+0

Ja - das ist fertig. – category

Antwort

0

Subelemente tragen Stammbaumdaten, so aktualisiert Wurzel Verwendung updated_subelement.getroottree().getroot() zu erhalten:

>>> nested_child_parent_results = el.xpath("./d/e/p/a") 
>>> nested_child_parent = nested_child_parent_results[0] 
>>> nested_child_parent.getroottree().getroot()