python中xml.etree.ElementTree忽略注释令人头疼,今天终于解决了

默认情况下,当使用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)
posted @ 2021-12-08 20:04  tangy1  阅读(1304)  评论(0编辑  收藏  举报