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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM