我需要在保留其数据的同时删除 XML 元素。lxml 函数strip_tags
确实删除了元素,但它以递归方式工作,我想去除单个元素。
我尝试使用这篇文章的答案,但remove
删除了整个元素。
xml="""
<groceries>
One <fruit state="rotten">apple</fruit> a day keeps the doctor away.
This <fruit state="fresh">pear</fruit> is fresh.
</groceries>
"""
tree=ET.fromstring(xml)
for bad in tree.xpath("//fruit[@state='rotten']"):
bad.getparent().remove(bad)
print (ET.tostring(tree, pretty_print=True))
我想得到
<groceries>
One apple a day keeps the doctor away.
This <fruit state="fresh">pear</fruit> is fresh.
</groceries>\n'
我明白了
<groceries>
This <fruit state="fresh">pear</fruit> is fresh.
</groceries>\n'
我尝试使用strip_tags:
for bad in tree.xpath("//fruit[@state='rotten']"):
ET.strip_tags(bad.getparent(), bad.tag)
<groceries>
One apple a day keeps the doctor away.
This pear is fresh.
</groceries>
但这会剥离一切,我只想用state='rotten'.
ibeautiful
相关分类