您好,我正在使用 lxml 在 Python3 中解析和完全修改 XML 文件,我需要将新元素放入现有元素并更改其父元素。
例子: 旧的 xml
<a>
<b>something</b>
<c>something different</c>
</a>
新的 xml
<a>
<new_parent>
<b>something</b>
<c>something different</c>
</new_parent>
<a>
这可能吗?
最佳答案
我不确定是否有一个函数可以直接执行您想要的操作。我会这样做:创建一个 new_parent
节点并将 a
的子节点附加到 new_parent
节点,然后附加 new_parent
到 a
。
import lxml.etree
xml = '''<?xml version='1.0' encoding='ASCII'?>
<root>
<a>
<b>something</b>
<c>something different</c>
</a>
</root>'''
root = lxml.etree.fromstring(xml)
a = root.find('.//a')
parent = lxml.etree.Element('new_parent')
for child in a:
parent.append(child)
a.append(parent)
print lxml.etree.tostring(root, xml_declaration=True)
打印(修改输出格式使其易于阅读)
<?xml version='1.0' encoding='ASCII'?>
<root>
<a>
<new_parent>
<b>something</b>
<c>something different</c>
</new_parent>
</a>
</root>
更新 您可以使用extend
而不是多次调用append
。
root = lxml.etree.fromstring(xml)
a = root.find('.//a')
parent = lxml.etree.Element('new_parent')
parent.extend(a)
a.append(parent)
关于python - 通过 Python (lxml) 在 xml 中更改父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19070145/