如何解决xml.etree.ElementTree 将父标签附加到子标签
我正在尝试使用 xml.etree.ElementTree
来解析一个 xml 字符串,找到一个特定的标签,并通过附加一个父标签来包装子标签。
我的 XML:
<a>
<b>text1</b>
<c>text2</c>
</a>
所需的 XML:
<a>
<b>text1</b>
<new_parent_tag_added>
<c>text2</c>
</new_parent_tag_added>
</a>
当前代码:
document_root = etree.ElementTree(etree.fromstring( XML_STRING))
root = document_root.find('a')
b = etree.SubElement(root,'new_parent_tag_added')
c = etree.SubElement(b,'c')
在上面的代码中,我如何保留现有标签 <c>
的值,以便它与我想要的 xml 匹配?
解决方法
使用内置的 ElementTree 模块,你可以做到(谢谢@mzjn):
c = root.find('c')
etree.SubElement(root,'new_parent_tag_added').append(c)
root.remove(c)
使用 lxml.etree 会更短一些:
etree.SubElement(root,'new_parent_tag_added').append(root.find('c'))
不管怎样,记住节点的行为就像列表一样好,这样你就可以追加内容。