XML解析器及相关概念介绍

前几天看一本介绍JSP的书,上面有对XML解析器的介绍,但看不太懂,在网上搜了一些资料,看后发现原来书中写的不太正确。

通过这篇文章,把本人理解的关于XML解析器和Java下一些XML相关的概念介绍清楚。注意:这篇文章并没有具体的编程实现上的说明。

我很清楚,由于水平有限,这篇文章会有很多错误,欢迎大家批评指正,共同进步J

1、  什么是XML解析器?

XML解析器英文为XML Parser,它能够读入标准的XML文件或文件流,实现对文档正确性的验证、生成文档对象或文档流以便应用程序进一步处理等等操作。XML解析器的制作或开发一般遵循标准定义的API,现在被提及的概率最高的API标准定义是DOMSAX

根据下面的一些介绍,你还会发现,XML解析器定义了接口和实现,其中接口是符合下面介绍的标准的。

2、  我们有必要介绍一下DOMSAX

DOM英文为Document Object ModelW 3C 标准,与名字不同,它并不是定义文档结构的标准,而是定义了对XMLHTML等文档的操作的接口及其它标准。DOM远不只定义了操作XML文档的接口及标准,我们只关注DOM中定义的和XML相关的内容。

DOM定义了对于一个XML的解析器(解析一个XML文件),它应该具有哪些操作,这些操作的接口的定义是如何。

DOM标准本身是语言无关的,但XML解析器的实现必须依赖某个具体的语言,以Java为例,在JDKorg.w 3c .dom包中实现了DOM标准中对接口的描述,可以看到,这个包里面定义的全部是接口,并没有具体的实现。

SAX英文为Simple API for XML,它是由XML-DEV的一些人员开发的一套对XML进行操作的标准。

SAX定义的接口的标准的实现在JDKorg.xml.sax包中,但注意:org.xml.sax.helpers是解析器以来于定义的接口的具体类实现,应该不属于SAX的标准。

 

DOM VS SAX(并不是对比这两个标准)

XML解析编程经验的人应该都知道使用DOMSAX方式解析的区别。最大的区别:DOM方式的解析器将XML文档读入后在内存中生成一个文档树,来对文档进行操作;SAX方式的解析器类似解释型的语言,它以流的方式读入XML,并逐行解析。如此说来,对于大的文档,SAX应该是比较好的选择,但它并没有对增加XML节点有很好的支持。

 

 

通过上面的介绍,如果你能知道DOMSAX是语言无关的,解析器一般是定义了DOMSAX标准接口和实现的,那么,目的就达到了J下面,介绍一个XML的解析工具。

3、  Xerces

Xerces首先由Apache开发,被认为是最健壮的XML解析器,有多种语言的实现,其Java版本为Xerces-J,目前的最新版本为 1.4.4 ,它可以解析XML1.0标准的文件(XML只有1.0标准…),强大的XML解析功能包括支持DOM Level 2SAX Version 2以及更低版本,另外它支持JAXP(稍后介绍)

4、  JAXP

英文全名为Java API for XML Processing,最新版本是1.41.3版本已进入JSR-206,对于使用Java开发XML应用的人来说,了解它是必须的。

首先,特别需要注意的一点是JAXP不是一个XML解析器,它并没有XML解析的具体实现!!

严格来说,JAXP是一个API,但它和在Java中实现的DOMSAX接口并不一样,它根本就没有那样的接口,而是在它们之上又进行了抽象。JDKJAXP的源码在包javax.xml.parsers,我们发现这个包中,只有4个可见类,分别是DocumentBuilder,DocumentBuiderFactory,SAXParser,SAXParserFactory

它的目的是将所有符合DOMSAX标准的XML解析器的实现透明化,XML应用程序开发人员不用关心到底使用的哪个解析器,不仅如此,使用JAXP,还可以实现XML解析器的可插拔。

如果有必要,我们可以继续探讨它的编程实践。

5、  本来,我是想研究一下DOM4JJAXP的关系,以及JDOMDOM以及SAX的关系,但由于时间关系,只能暂时到此为止。

 

6、  参考资料:

A.       IBM 141认证教材

B.        关于DOM的介绍:www.w 3c .org/dom

C.        关于Xerces-J的介绍:http://xerces.apache.org/xerces-j/

D.       关于JAXP的介绍:

a)         www.ibm.com/developerworks/java/library/x-jaxp/

b)        www.ibm.com/developerworks/java/library/x-jaxp2/

c)         https://jaxp.dev.java.net/

E.        关于JSR的介绍:www.jcp.org

F.        关于DOM4JJAXP的一点讨论:

http://blog.csdn.net/toafu/archive/ 2005/04/06 /338337.aspx

G.       JDOM简介

JDOM是一个开源项目,它基于树型结构,利用纯Java的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM 直接为Java编程服务。它利用强而有力的Java语言的诸多特性(方法重载、集合概念以及映射),把SAXDOM的功能有效地结合起来。在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。

JDOM 2000年的春天被Brett McLaughlinJason Hunter开发出来,以弥补DOMSAX在实际应用中的不足。这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,Java程序员在使用时总觉得不太方便。

JDOM的最新版本为JDOM Beta 10。最近JDOM被收录到JSR-102内,这标志着JDOM成为了Java平台组成中的一部分。

JDOM类库

在使用JDOM时要下载JDOM类库,将其加载到JDK中。JDOM类库是由以下几个包组成:

包名 说明

org.jdom 包含了所有的xml文档要素的java类。

org.jdom.adapters 包含了与dom适配的java类。

org.jdom.filter 包含了xml文档的过滤器类。

org.jdom.input 包中提供的构造类从任何数据源中构造文档。

org.jdom.output 包含了读取xml文档的类。

org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口。

org.jdom.xpath 包含了对xml文档xpath操作的类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值