XML解析方法
一、SAX 和DOM
java解析XML文檔,最常用有兩種方法:
???? SAX (Simple API for XML): 基于事件的XML簡單API,包為 org.xml.sax;
???? DOM (Document Object Module):基本樹和節(jié)點的文檔對象模型,包為org.w3c.com。
SAX和DOM只是接口,沒有具體的實現(xiàn)。
?
?
二、JAXP
Sun公司提供了Java API for XML Parsing(JAXP)接口來使用SAX和DOM,通過JAXP,我們可以使用任何與JAXP兼容的XML解析器,JAXP的包是:javax.xml.parsers,jaxp 封裝了SAX和DOM,并且在SAX和DOM的基礎(chǔ)上,提供了一套比較簡單的API供開發(fā)人員使用,但是JAXP也不是具體的實現(xiàn),僅僅有JAXP也是無法工作的。
JAXP接口包含了三個包:?
(1)org.w3c.dom W3C推薦的用于XML標(biāo)準(zhǔn)規(guī)劃文檔對象模型的接口。?
(2)org.xml.sax 用于對XML進(jìn)行語法分析的事件驅(qū)動的XML簡單API(SAX)?
(3)javax.xml.parsers解析器工廠工具,程序員獲得并配置特殊的特殊語法分析器。
?
三、xerces解釋器(號稱地球上最快的xml解釋器)
?
?在xerces中對jaxp中定義的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory進(jìn)行了繼承(extends),對應(yīng)SAXParserImpl SAXParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl ,這就是為什么你的classpath中只要有xerces.jar(其中包含了sax dom jaxp )和 xercesImpl.jar就可以的原因了. Xerces是默認(rèn)的xml解析器。
?
SAXParserFactory saxParserfactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserfactory.newSAXParser(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
?
默認(rèn)得到的都是Xerces的SAXParser和DocumentBuilder.
?
?
四、jdom和dom4j
?
W3C的DOM標(biāo)準(zhǔn)API難用的讓人想撞墻,于是有一幫人開發(fā)Java專用的XML API目的是為了便于使用,這就是jdom的由來,開發(fā)到一半的時候,另一部分人又分了出來,他們有自己的想法,于是他們就去開發(fā)dom4j,形成了今天這樣兩個API,至于他們之間的性能,jdom全面慘敗,dom4j大獲全勝。
?
?
有一部分是轉(zhuǎn)載的,可惜找不到原創(chuàng)地址,應(yīng)該要貼上來的,向原創(chuàng)致敬。
總結(jié)
- 上一篇: w3c dom操作Xml时从加入另一个X
- 下一篇: webservice传送XML大小估算