Java中的XML: 文档模型,第一部分:性能 - 编程入门网
Java中的XML: 文档模型,第一部分:性能时间:2011-01-25 IBM Dennis M. Sosnoski使用内存中 XML 文档的 Java 开发者可以选择使用标准 DOM 表示或几个 Java 特定模型中的任何一个。该灵活性已经帮助将 Java 建立成 XML 工作的出色平台。但是,由于不同模型数量的增加,已经更加难以确定如何比较模型的功能、性能和易用性。 关于使用“Java 中的 XML”系列中的第一篇文章研究了 Java 中一些领先的 XML 文档模型的特性和性能。它包括一组性能测试的结果。在系列中的第二篇文章将通过比较为实现同样任务所使用的不同模型的样本代码来研究易用性问题。 文档模型 Java 中的可用文档模型数一直在增加。对于本文,我已经涵盖了最常用的模型和几项选择,这演示了那些可能还未被广泛了解或使用的特别令人感兴趣的特性。随着“XML 名称空间”的重要性增加,我已经包含了仅支持该功能的模型。下面列出了带有简要介绍和版本信息的模型。 仅为说明本文中所使用的术语: 解析器是指解释 XML 文本文档结构的程序 文档表示是指程序用于内存中文档的数据结构 文档模型是指支持使用文档表示的库和 API 某些 XML 应用程序根本不需要使用文档模型。如果应用程序可以通过文档的一次遍历搜集它需要的信息,则可能直接使用解析器。该方法可能需要增加一些工作量,但是它的性能总是优于在内存中构建文档表示。 DOM DOM(“文档对象模型”)是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。对于任何 Java 特定的模型,它是很好的对照。为了值得与 DOM 标准分开,Java 特定模型应该提供比 Java DOM 实现更优越的性能和/或易用性的优势。 DOM 定义充分利用了 XML 文档不同组件的接口和继承性。这为开发者带来了将公共接口用于几个不同类型组件的优势,但是同时增加了 API 的复杂性。因为 DOM 是与语言无关的,所以接口不需要利用公共 Java 组件,例如,Collections 类。 本文涉及两个 DOM 实现:Crimson 和 Xerces Java。Crimson 是基于 Sun Project X 解析器的 Apache 项目。它合并一个包含 DTD 支持的完整验证解析器。可以通过 SAX2 接口访问该解析器,并且 DOM 实现可以与其它 SAX2 解析器一起工作。Crimson 是在 Apache 许可证下发布的开放源码。用于性能比较的版本是 Crimson 1.1.1(jar 文件大小是 0.2MB),它包含有用于从文本文件的 DOM 构建的 SAX2 解析器。 另一个测试的 DOM 实现,即 Xerces Java 是另一个 Apache 项目。初始时,Xerces 基于 IBM Java 解析器(通常称为 XML4J)。(当前还处于早期 beta 测试版的重新开发的 Xerces Java 2 将最终继承它。当前版本有时称为 Xerces Java 1。)如同使用 Crimson 一样,可以通过 SAX2 接口和 DOM 来访问 Xerces 解析器。然而,Xerces 不提供将 Xerces DOM 与不同的 SAX2 解析器一起使用的任何方法。Xerces Java 包含对 DTD 和 XML Schema 的验证支持(仅带有对 Schema 支持的最小限制)。 Xerces Java 还支持 DOM 的延迟节点扩展方式(请参考本文中的 延迟 Xerces或 Xerces def.),其中文档组件初始时是以压缩格式表示的,仅当使用时才将它扩展成完整的 DOM 表示。这种方式的用意是允许更快的解析并降低内存的使用,尤其对于那些可能仅使用部分输入文档的应用程序。与 Crimson 类似,Xerces 是在 Apache 许可证下发布的开放源码。用于性能比较的版本是 Xerces 1.4.2(jar 文件大小是 1.8MB)。 JDOM JDOM 的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型,JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展&rdq |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |