python cookbook学习笔记十二:XML解析

来源:互联网 发布:钢笔日常书法知乎 编辑:程序博客网 时间:2024/06/04 17:56
解析XML文件:
 XMLeXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据。XMLJSON两种文件格式是互联网上应用得最多的数据传输格式。Python解析XML有三种方法:一是xml.dom.*模块。二是xml.sax.*模块 三是xml.etree.ElementTree模块
首先介绍dom模块。一个DOM的解析器在解析一个XML文档的时候。一次性读取整个文档。把文档中的所有元素保存在内存中的一个树结构中。 可以看到这种方式比较适用于解析数据小的XML文档,否则会很耗内存。
比如下面的结构。<string-array>下面包括许多<item>。这个结构包含了北京市下面的地级市
解析代码如下:
def xml_try():    domtree=xml.dom.minidom.parse(r'D:\test_source\arrays.xml')    data=domtree.documentElement    city=data.r'D:\test_source\rss20.xml',('start','end'))    for event,elem in doc2:        if event == 'start':            tag_indicate.append(elem.tag)        if event == 'end':            if tag_indicate.pop() == element:                yield elem.text
if __name__=='__main__':   for r in xml_try('title'):       print r
 
在上面的代码中。当eventstart的时候,记录此时的tag。当eventend的时候,比较记录的tag值和传入的element值。如果相当,则返回此时的elem.text. 在代码中我们传入的是title。得到的结果如下。

从上面几段代码可以看到,iterparse主要应用于比较大的xml文件。这种情况下如果一次性的读入所有数据形成树状结构,很耗内存。


原创粉丝点击