好用的python cElementTree

ElementTree是python的XML解析模块,cElementTree是ElementTree的C语言实现。Python 2.5的标准库已经包含了ElementTree和cElementTree。

下面是从cElementTree网站得到的测试数据:

Here are some benchmark figures, using a number of popular XML toolkits to parse a 3405k document-style XML file, from disk to memory:

librarytimespacenotes
xml.dom.minidom (Python 2.1)6.3 s80000k(1)
gnosis.objectify2.0 s22000k(5)
xml.dom.minidom (Python 2.4)1.4 s53000k(1)
ElementTree 1.21.6 s14500k 
ElementTree 1.2.4/1.31.1 s14500k 
cDomlette (C extension)0.540 s20500k(1)
PyRXPU (C extension)0.175 s10850k(2)
lxml.etree (C extension)(4)(4)(3)
libxml2 (C extension)0.098 s16000k(3)
readlines (read as utf-8)0.093 s8850k 
cElementTree (C extension)0.047 s4900k 
readlines (read as ascii)0.032 s5050k 


librarytimethroughput
xml.sax (Python 2.1)0.330 s10300 k/s
xml.sax (Python 2.4)0.292 s11700 k/s
xml.parsers.expat0.184 s18500 k/s
cElementTree XMLParser0.124 s27500 k/s
sgmlop0.092 s37000 k/s
cElementTree iterparse0.071 s48000 k/s

ElementTree是一棵由元素节点构成的树,文本内容是作为元素的text或tail属性表现的,如ele.text。这点比DOM把元素和文本都作为节点的方式简洁、方便很多。element支持一些字典或列表的操作,属性用字典方式,子节点用列表。查找用find或findall函数。

 

OperationResult
elem[n]Returns n'th child element.
elem[m:n]Returns list of m'th through n'th child elements.
len(elem)Returns number of child elements.
list(elem)Returns list of child elements.
elem.append(elem2)Adds elem2 as a child.
elem.insert(index, elem2)Inserts elem2 at the specified location.
del elem[n]Deletes n'th child element.
elem.keys()Returns list of attribute names.
elem.get(name)Returns value of attribute name.
elem.set(name, value)Sets new value for attribute name.
elem.attribRetrieves the dictionary containing attributes.
del elem.attrib[name]Deletes attribute name.

确实是好东西,而且用起来非常方便,简单的写几行代码体验一下~~~
# Python2.4下的代码
import  cElementTree as ET

# 解析文件
tree  =  ET.parse( ' test.xml ' )

# 获得根节点
root  =  tree.getroot()

# 找到第一个tagformat标签
tag  =  root.find( ' tagformat ' )
# 遍历所有的opt标签
for  ele  in  tag.findall( ' opt ' ):
    
print  ele.text

# 获得属性
print  root.get( ' name ' )
# 修改或新建属性
root.set( ' user ' ' liujunzhi ' )

# 以utf-8编码保存
=  open( ' output.xml ' ' w ' )
tree.write(f, encoding
= ' utf-8 ' )
f.close()


<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值