用於讀取XML文件的elementTree庫的時遇到的問題-----想要讀取xml裏的註釋。
類似於下面的這種格式的註釋。
<!--Thisisacomment-->
問題背景:
通常使用elmentTree可以進行解析XML文件,它會將其保存爲一個樹形結構,常用的讀取xml的方法。
import xml.etree.ElementTree as ET----------導入xml模塊 root = ET.parse('GHO.xml')------------------分析指定xml文件 tree = root.getroot()-----------------------獲取第一標籤 data = tree.find('Data')--------------------查找第一標籤中'Data'標籤 for obs in data:----------------------------歷遍'Data'中的所有標籤 for item in obs:------------------------歷遍'Data'中的'obs'標籤下的所有標籤 key = item.attrib()-----------------提取key值參數 print(list(key))--------------------輸出key值
方法一:使用該方法可以使得在生成樹的時候獲得本來有的註釋。
#!/usr/bin/env python
# CommentedTreeBuilder.py
from xml.etree import ElementTree
class CommentedTreeBuilder(ElementTree.TreeBuilder):
def __init__(self, *args, **kwargs):
super(CommentedTreeBuilder, self).__init__(*args, **kwargs)
def comment(self, data):
self.start(ElementTree.Comment, {})
self.data(data)
self.end(ElementTree.Comment)
然後在主代碼使用下面的方法。
import xml.etree.ElementTree as ET
parser = ET.XMLParser(target=CommentedTreeBuilder())
即可以讀取到註釋了。
方法二,直接使用lxml庫
或者使用下面的方式也可以。
import lxml.etree as ET
tree = ET.parse(filename)
#參考鏈接: