xml.etree.ElementTree 将父标签附加到子标签
xml.etree.ElementTree append parent tag to child tag
我正在尝试使用 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'))
无论如何,最好记住节点的行为类似于列表,因此您可以追加内容。
我正在尝试使用 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'))
无论如何,最好记住节点的行为类似于列表,因此您可以追加内容。