Java中的XML: 文档模子,第一部份:性能[Java编程]
本文“Java中的XML: 文档模子,第一部份:性能[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
利用内存中 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 尺度扩大”.固然实际将采取的格局仍在开辟中,还是对两个 beta 测试版的 JDOM API 做了很大的更改,.从 2000 年初就已经开始了 JDOM 开辟.
JDOM 与 DOM 主要有两方面差别.首先,JDOM 仅利用具体类而不利用接口.这在某些方面简化了 API,但是也限制了机动性.第二,API 大量利用了 Collections 类,简化了那些已经熟习这些类的 Java 开辟者的利用.
JDOM 文档声明其目的是“利用 20%(或更少)的精神办理 80%(或更多)Java/XML 问题”(按照学习曲线假定为 20%).JDOM 关于大大都 Java/XML 利用程序来说当然是有效的,并且大大都开辟者发现 API 比 DOM 简单理解得多.JDOM 还包含对程序行为的相当遍及查抄以避免用户做任安在 XML 中无意义的事.但是,它仍需求您充分理解 XML 以便做一些超越基本的工作(大概乃至理解某些情形下的错误).这大概是比学习 DOM 或 JDOM 接口都更有意义的工作.
JDOM 自身不包含解析器.它普通利用 SAX2 解析器来解析和考证输入 XML 文档(固然它还可以将从前构造的 DOM 表示作为输入).它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模子或 XML 文本文档.JDOM 是在 Apache 答应证变体下公布的开放源码.用于性能对比的版本是 JDOM Beta 0.7(jar 文件大小是 0.1MB)它带有效于从文本文件构建 JDOM 表示的 Crimson SAX2 解析器.
以上是“Java中的XML: 文档模子,第一部份:性能[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |