1、XML解析器作用:

  xml文档 ——> 解析器——>用户(开发者)关注的数据信息

2、XML解析器的发展历程:一个典型的 抽象-再抽象的过程

2.1不同的厂商提供了不同的解析器(即提供解析功能的类库)

  优点:用户(开发者)不用再自己来分析XML文档格式,便可以获取关注的信息数据

  缺点:如果不同的开发商开发的XML解析器提供的API都不一样,那么应用程序只能使用一个特定的解析器。一旦更改解析器,就要重新更改代码,这是相当痛苦的

2.2标准的诞生:DOMSAX只是定义了一套标准的接口,以及一些默认的实现。而解析器的开发商(eg:Apache开发商提供的Xerces解析器)在开发解析器的时候就要实现这些接口

  优点:实现了面向对象的核心思想——针对接口编程,而不是针对类编程;用户只要知道标准接口,便可以获取XML问答那个数据,而不需要知道具体实现

  缺点:以Xerces解析器使用为例(代码如下),该解析器同时支持DOM、SAX接口。要利用Xerces访问XML文档,只需在应用程序中构造一个解析器的实现类的对象(例如:SAX定义的解析器接口是org.xml.sax.XMLReaderXerces中提供的实现类是org.apache.xerces.parsers.SAXParser。)但是仍有问题——不同的解析器实现类是不同的,如果要使用另一个解析器,仍然需要修改程序,比如说就得修改org.apache.xerce.parsers.SAXParser( )这段代码

 ....

org.xml.sax.XMLReader sp = new org.apache.xerce.parsers.SAXParser();

FileInputStream fis = new FileInputStream("some.xml");

InputSource is = new InputSource(fis);

sp.setContentHandler();

sp.parse(is);

 ....

2.3JAXP:JAVA语言 API,为DOM,SAX均提供了支持。JAXP开发包有javax.xml包及其子包、org.xml.sax包及其子包、org.w3c.dom及其子包组成。在javax.xml.parsers包中,定义了几个工厂类,用于加载DOMSAX的实现类。只要符合JAXP规范的解析器实现其中的接口和抽象类,开发人员就可以在不改动代码的前提下,任意切换底层的实现类。

  优点:不需要再改动代码,易于移植

  缺点:代码量大,可读性差

2.4JDOM,Dom4j:Dom4j是一个易用的、开源的库,用于XMLXPathXSLT。它应用于Java平台,采用了Java集合框架并完全支持DOMSAXJAXP

 

 

posted on 2014-05-17 16:53  aviva虹  阅读(164)  评论(0编辑  收藏  举报