lxml - 插入嵌套元素

时间:2016-11-02 16:38:02

标签: python xpath nested lxml element

我知道可以使用element.insert(old_element, new_element)添加子元素,并且可以通过顺序替换父级直到root来插入嵌套的子元素 - hovewever是否存在执行此操作的函数或方法没有上述父母的替代品?即。

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

1 个答案:

答案 0 :(得分:0)

Subelements带有根树数据,因此要更新root用户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()