最近学习XML解析的时候有一些困惑,看材料都说JAXP、DOM、SAX都只是接口而已,而这些接口必须使用Xerces之类的解析器来实现但是我使用JAXP的时候,并没有指定任何解析器,也没有引入Xerces等解析器的jar包,照样可以成功的解析XML是否J2se1.6已经内置有一个XML解析器呢,如果有的话这个解析器是哪种的呢?

解决方案 »

  1.   

    学习!!别外我再接着楼上的提一问....当XML文档文件大小有3M大的时候...你们是用什么方法解析或者你要的数据的????
      

  2.   

    3M,我以前用c++中的sax解析器解析过15M的XML文件,
    至于楼主说的JAXP,实际上严格说来,JAXP 是 API,但更准确地说是抽象层。它没有提供解析 XML 的新方法,没有添加到 SAX 或 DOM,也没有为 Java 和 XML 处理提供新功能。但是,JAXP 使得使用 DOM 和 SAX 来处理一些困难任务变得更容易。
    详细请看:
    http://www.ibm.com/developerworks/cn/xml/x-jaxp/
      

  3.   

    楼上的链接很不错
    里面提到“JAXP 的早期版本中,Sun 包括 JAXP API(带有刚才提到的六个类和一些常用于转换的类)和 一个叫做 Crimson 的解析器。Crimson 是 com.sun.xml 软件包的一部分。在 JAXP 的新版本中 —— 包括在 JDK 中 —— Sun 已经重新包装了 Apache Xerces 解析器(参阅  参考资料)。在这两种情况下,虽然解析器是 JAXP 发行版的一部分,但不是 JAXP API 的一部分。可以认为是 JDOM 附带了 Apache Xerces 解析器。该解析器不是 JDOM 的一部分,但由 JDOM 使用,所以包括它是为了确保 JDOM 可以即装即用。同一原则适用于 JAXP,但并未明确公布:JAXP 附带解析器是为了可以立即使用。”简单的说,就是新版Java类库中已经内置有Xerces,而Jaxp是默认调用这个解析器的吧
      

  4.   

    jaxp没一定用哪个,他用一种公共的接口来操作jdom或sax