频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

使用 ElementTree,以 Python 语言处理 XML

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组
下一页 1 2 3 4 5 6 7 

  Fredrik Lundh 的 ElementTree 模块是一种日益受欢迎的 API,用于以 Python 语言进行轻量级且高速的 XML 文档操作。在这篇专栏文章中,David 将 ElementTree 和其它几种致力于以对象树方式处理 XML 实例的库,尤其是他自己的 gnosis.xml.objectify 模块,作了个比照。

  在本专栏以前的文章中,我已讨论了一些 XML 库,它们旨在以给定编程语言仿真最常见的本机操作。其中,我首先介绍了我自己的、用于 Python 的 gnosis.xml.objectify 。另外我也专门用了几篇文章介绍 Haskell 的 HaXml 和 Ruby 的 REXML 。虽然我还未在这里讨论过,但 Java 的 JDOM和 Perl 的 XML::Grove也有着类似的目标。

  最近,我在 comp.lang.python 新闻组上注意到一些帖子,提到了 Fredrik Lundh 的 ElementTree,一个用于 Python 的本机 XML 库。当然,在 Python 的标准分发版中早已包括了几个 XML API,包括:DOM 模块、SAX 模块、 expat包装器和不赞成使用的 xmllib。其中,只有 xml.dom将 XML 文档转换为内存中的对象,您可以通过节点上的方法调用来操作这些对象。实际上,您将发现存在几种不同的 Python DOM 实现,其特性各有不同:

  xml.minidom是一个基本的实现。

  xml.pulldom只在需要时构建被访问的子树。

  考虑到速度问题,4Suite 的 cDomlette( Ft.Xml.Domlette)用 C 语言构建 DOM 树,避免了使用 Python 回调。

  当然,出于我身为作者的自负,我最想做的是将 ElementTree和我自己的 gnosis.xml.objectify及其它几种目的和行为都极其接近的库进行比较。 ElementTree的目标是以数据结构的形式存储 XML 文档的表示,这些数据结构的行为方式同您在 Python 中考虑数据的方式非常相似。这里的关注焦点在于以 Python 进行编程,而不是使您的编程风格顺应 XML。

  一些基准测试

  我的同事 Uche Ogbuji 曾为另一个出版物写过一篇关于 ElementTree的短文。(请参阅 参考资料。)他对 ElementTree和 DOM 做了几个测试,其中之一比较了它们的相对速度和内存消耗。Uche 选用了他自己的 cDomlette 作为比较对象。很遗憾,我不能在我使用的 Mac OSX 机器上安装 4Suite 1.0a1(我正在研究一种变通方法)。然而,我可以根据 Uche 的评估来估计大致性能 - 他指出 ElementTree同 cDomlette相比,速度慢 30%,但消耗的内存也要少 30%。

  我极为好奇的是, ElementTree和 gnosis.xml.objectify在速度和内存上比较,结果会如何。实际上,之前我从未对我的模块进行过非常精确的基准测试,因为我始终没有一个具体的 可比对象。我选择了两个过去我曾用于基准测试的文档:莎士比亚的 哈姆雷特289 KB XML 版本,及 3 MB XML Web 日志。我创建了几个脚本,仅用于将 XML 文档解析为几种工具的对象模型,但此外不作任何其它操作:

正文:http://www.qqread.com/xml/u350649.html 更多文章 更多内容请看Python实用指南数据库处理专题XML详解专题,或进入讨论组讨论。
下一页 1 2 3 4 5 6 7 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章