用于读取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)
#参考链接: