用ElementTree 在Python 中解析XML | Python read XML file
原文:http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/[1]译者:TheLover_Z[2]当你需要解析和处理XML的时候,Python表现出了它“batteriesincluded”的一面。标准库[3]中大量可用的模块和工具足以应对Python或者是XML的新手。几个月前在Python核心开发者之间发生了一场有趣的讨论[4],他们讨论了Python下可用的XML处理工具的优点,还有如何将它们最好的展示给用户看。这篇文章是我本人的拙作,我打算讲讲哪些工具比较好用还有为什么它们好用,当然,这篇文章也可以当作一个如何使用的基础教程来看...
原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/[1]
译者: TheLover_Z[2]
当你需要解析和处理 XML 的时候,Python 表现出了它 “batteries included” 的一面。 标准库[3] 中大量可用的模块和工具足以应对 Python 或者是 XML 的新手。
几个月前在 Python 核心开发者之间发生了一场 有趣的讨论[4] ,他们讨论了 Python 下可用的 XML 处理工具的优点,还有如何将它们最好的展示给用户看。这篇文章是我本人的拙作,我打算讲讲哪些工具比较好用还有为什么它们好用,当然,这篇文章也可以当作一个如何使用的基础教程来看。
这篇文章所使用的代码基于 Python 2.7,你稍微改动一下就可以在 Python 3.x 上面使用了。
应该使用哪个 XML 库?Python 有非常非常多的工具来处理 XML。在这个部分我想对 Python 所提供的包进行一个简单的浏览,并且解释为什么 ElementTree 是你最应该用的那一个。
xml.dom.* 模块 - 是 W3C DOM API[5] 的实现。如果你有处理 DOM API 的需要,那么这个模块适合你。注意:在 xml.dom 包里面有许多模块,注意它们之间的不同。
xml.sax.* 模块 - 是 SAX API 的实现。这个模块牺牲了便捷性来换取速度和内存占用。SAX 是一个基于事件的 API,这就意味着它可以“在空中”(on the fly)处理庞大数量的的文档,不用完全加载进内存(见注释1)。
xml.parser.expat - 是一个直接的,低级一点的基于 C 的 expat 的语法分析器(见注释2)。 expat 接口基于事件反馈,有点像 SAX 但又不太像,因为它的接口并不是完全规范于 expat 库的。
最后,我们来看看 xml.etree.ElementTree (以下简称 ET)。它提供了轻量级的 Python 式的 API ,它由一个 C 实现来提供。相对于 DOM 来说,ET 快...