2016-11-02 3 views
1

서브 요소 추가는 element.insert(old_element, new_element)을 사용하여 수행 할 수 있으며 부모를 루트까지 순차적으로 바꾸어 중첩 된 하위 요소를 삽입 할 수 있음을 이해합니다. 기능 또는 수행 방법이 있습니다. 부모님의 교체가 없다고? 즉lxml - 중첩 된 요소 삽입

>>> 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

당신이 데모 용으로 전후 샘플 XMLS를 추가시겠습니까? 감사. – alecxe

+0

예 - 끝났습니다. – category

답변

0

하위 요소 수행 루트 트리 데이터, 그래서 업데이 트하려면 루트 사용 updated_subelement.getroottree().getroot() :

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