用于读取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)
#参考链接:
本文介绍如何使用Python的elementTree库或lxml库读取XML文件中的注释,通过自定义TreeBuilder或直接使用lxml库实现。

被折叠的 条评论
为什么被折叠?



