我正在寻找一种方法来删除在文件<e>
中具有特定值的特定标记(即,我将此线程称为起始指南:如何使用Python从XML中删除元素而不使用库而不是使用with 。将点与线程连接并阅读doc,但是我没有成功。mmm
xml
<e>mmm</e>
lxml
ElementTree
python v2.6.6
ElementTree api
感谢您的建议和思考。
<?xml version='1.0' encoding='UTF-8'?>
<parent>
<first>
<a>123</a>
<c>987</c>
<d>
<e>mmm</e>
<e>yyy</e>
</d>
</first>
<second>
<a>456</a>
<c>345</c>
<d>
<e>mmm</e>
<e>hhh</e>
</d>
</second>
</parent>
<e>
标签都是的子节点<d>
。如果我们可以假设所有目标节点(<e>
具有value的节点mmm
)都符合上述条件,则可以使用此脚本。(我添加了一些额外的节点来检查它是否有效
import xml.etree.ElementTree as ET
xml_string = """<?xml version='1.0' encoding='UTF-8'?>
<parent>
<first>
<a>123</a>
<c>987</c>
<d>
<e>mmm</e>
<e>aaa</e>
<e>mmm</e>
<e>yyy</e>
</d>
</first>
<second>
<a>456</a>
<c>345</c>
<d>
<e>mmm</e>
<e>hhh</e>
</d>
</second>
</parent>"""
# this is how I create my root, if you choose to do it in a different way the end of this script might not be useful
root = ET.fromstring(xml_string)
target_node_first_parent = 'd'
target_node = 'e'
target_text = 'mmm'
# find all <d> nodes
for node in root.iter(target_node_first_parent):
# find <e> subnodes of <d>
for subnode in node.iter(target_node):
if subnode.text == target_text:
node.remove(subnode)
# output the result
tree = ET.ElementTree(root)
tree.write('output.xml')
我试图只删除通过找到的节点,root.iter(yourtag)
但是显然从根目录看是不可能的(显然,这不是那么容易)
让我知道这是否对您有帮助!我对XML不太了解,如果我精通任何术语,我将很高兴听到和学习!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句