用Python lxml.etree反转元素的嵌套
我在找一个用Python的lxml.etree库的做法,想把元素的嵌套关系反转,也就是把:
<text>
<name>
<ref>foobar</ref>
</name>
</text>
变成:
<text>
<ref>
<name>foobar</name>
</ref>
</text>
我觉得这个应该很简单,但我就是想不出来。
1 个回答
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)