我想从xml文件中删除元素。当我使用ElementTree时,我可以从xml文件中获取所有元素,但是我无法获取xml语句和注释。 所以,如果我使用:
# get xml nodes
tree = ElementTree.pares()
# do filter things ...
# write to files
tree.write(file_path)
我会遗漏所有的陈述和注释。有没有办法从* .xml文件中删除xml元素并保留文件中的注释,语句或任何其他内容?
例如,来源:
<?xml version="1.0" encoding="utf-8"?>
<!-- I am annotation -->
<string name="name">content</string><string left="left">left things</string>
我的目标:
<?xml version="1.0" encoding="utf-8"?>
<!-- I am annotation -->
<string left="left">left things</string>
但是当我使用tree.write(file_path)时,它会错过注释和语句,变为:
<string left="left">left things</string>
答案 0 :(得分:0)
使用https://docs.python.org/2/library/xml.etree.elementtree.html
import xml.etree.ElementTree as ET
tree = ET.parse('data.xml')
root = tree.getroot()
for country in root.findall('//string[@name='left']'):
root.remove(country)
tree.write('output_data.xml')
答案 1 :(得分:0)
可以使用lxml
提供remove_comments=False
选项来保留XML注释:
from lxml import etree
parser = etree.XMLParser(remove_comments=False)
tree = etree.parse("input.xml", parser=parser)
root = tree.getroot()
for c in root.findall(".//string[@name='name']"):
root.remove(c)
tree.write("output.xml")
“input.xml”:
<root>
<!-- I am annotation -->
<string name="name">content</string><string left="left">left things</string>
</root>
“output.xml”:
<root>
<!-- I am annotation -->
<string left="left">left things</string>
</root>
相关问题: