正 文

JAXP的演进


www.7dspace.com  更新日期:2005-10-27 2:39:10  七度空间


      在1998年W3CXML1.0推荐标准发布之后,XML就开始变得很流行。Sun公司就是在那时候规范Java Community Process (JCP),同时JAXP(JSR-05)的第一版在2000早些时候发布了。这个版本得到了很多工业集团的支持,譬如(以年月次序排列)BEA Systems, Fujitsu Limited, Hewlett-Packard, IBM, Netscape Communications, Oracle, and Sun Microsystems, Inc.

      JAXP (全称Java API for XML Parsing)的可插拔性(pluggability)在开发社区里引起很大的轰动。这点也是JAXP的精华所在。开发人员可以编写自己的xml处理器,只要它符合JAXP的APIs,这样底层不同的xml处理器可以任意切换而不用改应用程序的代码。

      那JAXP到底是什么呢?首先 这个P有点迷惑,它代表Parsing还是Processing呢?

      因为JAXP1.0的时候只支持解析(parsing),所以JAXP全称应该是Java API for XML Parsing.

      但在JAXP1.1的时候,XSL-T 被推荐用作XML的转换(transformation)处理。很遗憾,当时W3C XLT-T的标准规范(specification)里没有提供任何用来转换(transformation)处理的APIs。因此JAXP1.1的专家组推荐了一组APIs叫Transformation API for XML (TrAX)。

      从此JAXP就叫Java API for XML Processing. JAXP通过逐步进化,支持的东西也越来越多。不仅仅是解析xml文件(譬如在解析文档的时候根据schema校验有效性,根据预解析的schema来校验文档有效性,计算XPath 表达式等等)。

      由于底层用来处理xml文档的可插拔的processor是任意编写的,只要它符合JAXP的规范,因此JAXP 是一个轻量级的处理xml文件的处理APIs。(译者注:JAXP只是一个api规范而已,真正底层实现是任意的。后面会有具体介绍。)

      使用JAXP来解析XML文档

      JAXP支持基于对象和基于事件的两种解析方式。基于对象的解析,到目前为止只支持W3C DOM解析,JAXP的专家组可能在JAXP的将来版本中会支持J-DOM规范。基于事件的解析,只有SAX 解析模式被支持,另一个基于事件的解析模式叫Pull Parsing,本来它应该是JAXP的一部分。但是对于Pull Parsing存在有一份不同的JSR (#173)文档,也就是大家所知道的Streaming API for XML (StAX) parsing,现在我们对于那个也没什么更多的可以做了。

Figure 1: Various mechanism of parsing XML

      使用SAX来解析XML文档

      SAX APIs 是在1998年的早些时候由David Megginson提出的,目标是成为基于事件驱动的xml文档解析模式的标准API(这里你可以的到一些 SAX 的历史信息)。即使这样,SAX仍不是W3C 的REC。但毫无疑问实际中它是行业内解析XML文档的标准。

      SAX 是一种基于事件的解析模式,是push-parsing原理,解析文档的时候,当遇到<opening> 标签, </closing>标签 或字符等,SAX 都会产生相应的事件(event)。一个SAX解析器解析XML文档的时候,把文档看作为一个流,依次产生相应的事件报告给已注册的content handler, org.xml.sax.ContentHandler,如果有错误,错误会报告给error handler, org.xml.sax.ErrorHandler.

8页,页码:[1] [2] [3] [4] [5] [6] [7] [8] 

上一篇:快速了解IDS和IPS的区别
下一篇:AS3.0概要–了解AS3.0的改变
作者:  来源:Matrix ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐