通过Python(lxml)更改xml中的父级
您好,我正在使用lxml解析和完全修改Python3中的XML文件,我需要将新元素放入现有元素并更改它们的父元素 例如: 旧xml通过Python(lxml)更改xml中的父级,python,xml,parsing,lxml,Python,Xml,Parsing,Lxml,您好,我正在使用lxml解析和完全修改Python3中的XML文件,我需要将新元素放入现有元素并更改它们的父元素 例如: 旧xml 某物 不一样的东西 新xml <a> <new_parent> <b>something</b> <c>something different</c> </new_parent> <a> 某物 不一样的东西 有可能吗?我不确定是否有一个函
某物
不一样的东西
新xml
<a>
<new_parent>
<b>something</b>
<c>something different</c>
</new_parent>
<a>
某物
不一样的东西
有可能吗?我不确定是否有一个函数可以直接满足您的需要。我将按如下操作:创建一个
new\u parent
节点,将a
的子节点追加到new\u parent
节点,并将new\u 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)
下层选民:我怎样才能改进答案?如果你有更好的方法来解决这个问题,请把它贴出来。
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>
root = lxml.etree.fromstring(xml)
a = root.find('.//a')
parent = lxml.etree.Element('new_parent')
parent.extend(a)
a.append(parent)