默認情況下,當使用ElementTree模塊修改XML文件時,保存后會丟失原文件中的注釋。
方法一:使用該方法可以使得在生成樹的時候獲得本來有的注釋。
#!/usr/bin/env python
# CommentedTreeBuilder.py
from xml.etree import ElementTree
class CommentedTreeBuilder(ElementTree.TreeBuilder):
def comment(self, data):
self.start(ElementTree.Comment, {})
self.data(data)
self.end(ElementTree.Comment)
parser = ElementTree.XMLParser(target=CommentedTreeBuilder())
tree = ElementTree.parse( r'c:\test.xml', parser = parser)
root = tree.getroot()
for rank in root.iter('rank'):
new_rank = int(rank.text) + 1
rank.text = str(new_rank)
rank.set('updated', 'yes')
tree.write('c:\test.xml', encoding='utf-8', xml_declaration=True)
即可以讀取到注釋了。 親測有效
方法二,直接使用lxml庫,或者使用下面的方式也可以。
import lxml.etree as ET
tree = ET.parse(filename)
