一、SAX 和DOM
java解析XML文档,最常用有两种方法:
SAX (Simple API for XML): 基于事件的XML简单API,包为 org.xml.sax;
DOM (Document Object Module):基本树和节点的文档对象模型,包为org.w3c.com。
SAX和DOM只是接口,没有具体的实现。
二、JAXP
Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器,JAXP的包是:javax.xml.parsers,jaxp 封装了SAX和DOM,并且在SAX和DOM的基础上,提供了一套比较简单的API供开发人员使用,但是JAXP也不是具体的实现,仅仅有JAXP也是无法工作的。
JAXP接口包含了三个包:
(1)org.w3c.dom W3C推荐的用于XML标准规划文档对象模型的接口。
(2)org.xml.sax 用于对XML进行语法分析的事件驱动的XML简单API(SAX)
(3)javax.xml.parsers解析器工厂工具,程序员获得并配置特殊的特殊语法分析器。
三、xerces解释器(号称地球上最快的xml解释器)
在xerces中对jaxp中定义的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory进行了继承(extends),对应SAXParserImpl SAXParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl ,这就是为什么你的classpath中只要有xerces.jar(其中包含了sax dom jaxp )和 xercesImpl.jar就可以的原因了. Xerces是默认的xml解析器。
SAXParserFactory saxParserfactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserfactory.newSAXParser(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
默认得到的都是Xerces的SAXParser和DocumentBuilder.
四、jdom和dom4j
W3C的DOM标准API难用的让人想撞墙,于是有一帮人开发Java专用的XML API目的是为了便于使用,这就是jdom的由来,开发到一半的时候,另一部分人又分了出来,他们有自己的想法,于是他们就去开发dom4j,形成了今天这样两个API,至于他们之间的性能,jdom全面惨败,dom4j大获全胜。
有一部分是转载的,可惜找不到原创地址,应该要贴上来的,向原创致敬。