使用python lxml.etree反转元素的嵌套

时间:2011-11-17 22:08:23

标签: python lxml

我正在寻找python的lxml.etree的配方,它将反转元素的嵌套,转向:

<text>
    <name>
        <ref>foobar</ref>
    </name>
</text>

成:

<text>
    <ref>
        <name>foobar</name>
    </ref>
</text>

我觉得这很明显,但我没有看到它。

1 个答案:

答案 0 :(得分:2)

这样的东西?

import lxml.etree as et
from lxml.builder import E

xml = """
<text>
    <name>
        <ref>foobar</ref>
    </name>
</text>
"""

tree = et.fromstring(xml)

for name in tree.findall('name'):
    text = name.find('ref').text
    tree.replace(name, E.ref(E.name(text)))

print et.tostring(tree)