本文约2200字,建议阅读时间11~14分钟
关键字:python,xml,可扩展标记语言,xml.etree.ElementTree
假设当前工作目录下存在data.xml文件,其内容如下:
1、XML文件的解析
(1)读取xml文件
import xml.etree.ElementTree as ET
tree=ET.parse('data.xml')
#返回ElementTree对象
root=tree.getroot()
#返回Element对象
#亦可通过ET.fromstring(xml_string)来解析xml格式的根元素
(2)获取Element对象的标签
root.tag
#返回’data’
(3)获取Element对象的属性字典
root.attrib
#返回{}
(4)通过节点嵌套索引获取子节点信息
root[1][2].text
#返回’50’
注:建议通过API进行解析而不是通过xml文本,通过API解析的文档通常包含注释和处理指令。
2、非阻塞解析的Pull API
xml.etree.ElementTree模块提供的许多解析函数在返回结果前需要立刻读取整个文档,但有时我们需要在享受全文档带来便利的同时逐步解析xml文档而不产生阻塞,该模块提供的XMLPullParser.就是满足该条件的最有效的解析工具,它解析xml文档时不需要阻塞读取数据,而是通过feed方法来逐步读取,为了解析xml文档的元素,可以通过read_events方法来实现。
如果在读取xml数据不在乎阻塞且仍希望逐步获得逐步解析的能力,可以使用iterparser,它在读取大规模xml文档时且不想整体存入内存时很有用。
parser=ET.XMLPu