Python 解析xml有如下几种方式:
1.SAX (simple API for XML )
Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
2.DOM(Document Object Model)
将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。
3.ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。
我在工作中想解析roboframework的自动化结果output.xml文件,提取出case name, 特点是文件大于800M。开始的时候用的Dom树方法,比较慢,耗内存,直接卡死。
昨天选用了ElementTree的方式,解析很快。下面把解析代码贴出来:
import xml.etree.ElementTreeas ET
参考:
https://docs.python.org/2/library/xml.etree.elementtree.html