Python的标准库中,提供了6种可以用于处理XML的包。

(1)xml.dom

xml.dom实现的是W3C制定的DOM API。如果你习惯于使用DOM API或者有人要求这这样做,可以使用这个包。不过要注意,在这个包中,还提供了几个不同的模块,各自的性能有所区别。

DOM解析器在任何处理开始之前,必须把基于XML文件生成的树状数据放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。

(2)xml.dom.minidom

xml.dom.minidom是DOM API的极简化实现,比完整版的DOM要简单的多,而且这个包也小的多。那些不熟悉DOM的朋友,应该考虑使用xml.etree.ElementTree模块。据lxml的作者评价,这个模块使用起来并不方便,效率也不高,而且还容易出现问题。

相关推荐:《Python教程》

(3)xml.dom.pulldom

与其他模块不同,xml.dom.pulldom模块提供的是一个“pull解析器”,其背后的基本概念指的是从XML流中pull事件,然后进行处理。虽然与SAX一样采用事件驱动模型(event-driven processing model),但是不同的是,使用pull解析器时,使用者需要明确地从XML流中pull事件,并对这些事件遍历处理,直到处理完成或者出现错误。

pull解析(pull parsing)是近来兴起的一种XML处理趋势。此前诸如SAX和DOM这些流行的XML解析框架,都是push-based,也就是说对解析工作的控制权,掌握在解析器的手中。

(4)xml.sax

xml.sax模块实现的是SAX API,这个模块牺牲了便捷性来换取速度和内存占用。SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准。它是事件驱动的,并不需要一次性读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。

(5)xml.parser.expat

xml.parser.expat提供了对C语言编写的expat解析器的一个直接的、底层API接口。expat接口与SAX类似,也是基于事件回调机制,但是这个接口并不是标准化的,只适用于expat库。

expat是一个面向流的解析器。您注册的解析器回调(或handler)功能,然后开始搜索它的文档。当解析器识别该文件的指定的位置,它会调用该部分相应的处理程序(如果您已经注册的一个)。该文件被输送到解析器,会被分割成多个片断,并分段装到内存中。因此expat可以解析那些巨大的文件。

(6)xml.etree.ElementTree(以下简称ET)

xml.etree.ElementTree模块提供了一个轻量级、Pythonic的API,同时还有一个高效的C语言实现,即xml.etree.cElementTree。与DOM相比,ET的速度更快,API使用更直接、方便。与SAX相比,ET.iterparse函数同样提供了按需解析的功能,不会一次性在内存中读入整个文档。ET的性能与SAX模块大致相仿,但是它的API更加高层次,用户使用起来更加便捷。

建议:在使用Python进行XML解析时,首选使用ET模块,除非你有其他特别的需求,可能需要另外的模块来满足。

python解析xml选用什么模块_python 解析xml需要什么模块相关推荐

  1. python英译汉库模块_Python 进阶之路-翻译模块

    Python 进阶之路-翻译模块 作者:nango  阅读:1749次  来源:原创  时间:2017-07-14 17:09 Git 地址 [python 翻译模块](https://github. ...

  2. python 处理xml中的注释_python 处理xml 笔记

    文档模型:用以描述词汇和文档结构,定义文档中将要出现的数据元素,元素之间的关系,以及元素的数量等 实现文档模型的方法:模式 和 DTD (document type definition 文档类型定义 ...

  3. python爬虫需要调用什么模块_python爬虫需要调用什么模块

    python 爬虫常用模块: Python标准库--urllib模块 功能:打开URL和http协议之类 注:python 3.x中urllib库和urilib2库合并成了urllib库. 其中url ...

  4. python 文件操作的模块_Python之文件操作修改模块

    1.使用OS模块进行path路径操作 操作的语法为os.path.方法名(): import os # 首先导入os模块 *abspath()方法:获取当前文件的全路径,所带参数为file: file ...

  5. python巩固函数和模块_Python学习教程6:函数,模块和类的使用

    Python函数 定义 函数是组织好的,可重复利用的,用来实现单一,或相关联功能的代码片段. 函数能提高应用的模块行,使代码逻辑更加的条理清晰. 内建函数 内建函数是Python中自带的,可供用户重复 ...

  6. math库是python语言的数学模块_Python入门-函数库(模块)

    内建函数和异常 定义内建函数(例如 len,int, range ...)的 _ _builtin_ _ 模块, 以及定义所有内建异常的 exceptions模块. Python 在启动时导入这两个模 ...

  7. python解析xml文件选用模块_python解析xml模块封装代码

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. python解析html xml最好的模块_Python HTML/XML解析器BeautifulSoup(爬虫解析器)

    The Dormouse's story Once upon a time there were three little sisters; and their names were Elsie, L ...

  9. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

最新文章

  1. Yolo-v3 and Yolo-v2 for Windows and Linux 翻译
  2. frp 0.11.0 发布新版,支持很多新功能
  3. Hbuilder----安装less插件(详细)
  4. 加密封装 怎么把_不要再封装各种Util工具类了,这个神级框架值得拥有!
  5. 如何在intellj Idea中给新建的项目添加jar包?
  6. 【tool】firewall防火墙
  7. SQL查询优化 LEFT JOIN和INNER JOIN
  8. 反射获取类_新人也能看懂?如何使用 Java 反射?反射的用法及案例
  9. oracle估算数据增长,如何估算oracle 数据库,数据库对象历史增长情况
  10. 读取txt文件(字符串内容),分割数组,存入Map
  11. 【Unity3D实战】摇摆直升机开发实战(二)
  12. 技术总监7年总结,如何进行正确的沟通?
  13. 罗克韦尔自动化收购工业自动化系统模拟与仿真的领先软件开发商Emulate3D
  14. 华为设备配置Telnet与SSH服务实现运程连接网络设备
  15. 低功耗基础概念——isolation cell
  16. [ELK实战] Elasticsearch 常用操作 (基于DSL)
  17. 操作系统进程状态和状态转换详解
  18. 超级实习生内推的实习offer,实习经历企业认可吗?
  19. poi tl 判断空值_poi-tl
  20. 前端鸡汤奉上-好好解解腻

热门文章

  1. 按键精灵获取系统时间定时点击
  2. 刚柔结合板是如何被设计出来的(转载)
  3. zcy算法入门笔记004
  4. java获取字符串占用的字节大小,以及不同编码下一个汉字占用的字节数
  5. 嵌入式uboot、kernel、文件系统的关系
  6. 我是如何从写不出来,到完成二十万字书稿的?
  7. 第一届BMZCTF公开赛-MISC-Writeup
  8. Android 支持分屏
  9. 微软收购动视暴雪之后棋要怎么下
  10. 深入理解JNDI注入与Java反序列化漏洞利用