4 回答
TA贡献1848条经验 获得超6个赞
我建议ElementTree
。同一API的其他兼容实现,例如lxml
,以及cElementTree
Python标准库本身; 但是,在这种情况下,他们主要添加的是更快的速度 - 编程部分的简易性取决于ElementTree
定义的API 。
首先root
从XML 构建一个Element实例,例如使用XML函数,或者使用以下内容解析文件:
import xml.etree.ElementTree as ET root = ET.parse('thefile.xml').getroot()
或者显示的许多其他方式中的任何一种ElementTree
。然后做一些事情:
for type_tag in root.findall('bar/type'): value = type_tag.get('foobar') print(value)
类似的,通常很简单的代码模式。
TA贡献2036条经验 获得超8个赞
那里有很多选择。如果速度和内存使用是一个问题,cElementTree看起来很棒。与简单地使用文件读取相比,它的开销非常小readlines
。
相关指标可在下表中找到,从cElementTree网站复制:
library time space
xml.dom.minidom (Python 2.1) 6.3 s 80000K
gnosis.objectify 2.0 s 22000k
xml.dom.minidom (Python 2.4) 1.4 s 53000k
ElementTree 1.2 1.6 s 14500k
ElementTree 1.2.4/1.3 1.1 s 14500k
cDomlette (C extension) 0.540 s 20500k
PyRXPU (C extension) 0.175 s 10850k
libxml2 (C extension) 0.098 s 16000k
readlines (read as utf-8) 0.093 s 8850k
cElementTree (C extension) --> 0.047 s 4900K <--
readlines (read as ascii) 0.032 s 5050k
正如@jfs所指出的那样,cElementTree
它与Python捆绑在一起:
Python 2 :
from xml.etree import cElementTree as ElementTree
.Python 3 :(
from xml.etree import ElementTree
自动使用加速C版本)。
添加回答
举报