| 網(wǎng)上能夠查到很多的4種解析方式的區(qū)別,我再做一下摘錄和總結(jié),順帶給自己做個(gè)備份。 SAX sax分析器在對xml文檔進(jìn)行分析時(shí),觸發(fā)一系列的事件,應(yīng)用程序通過事件處理函數(shù)實(shí)現(xiàn)對xml文檔的訪問. 因?yàn)槭录|發(fā)是有時(shí)序性的,所以sax分析器提供的是一種對xml文檔的順序訪問機(jī)制,對于已經(jīng)分析過的部分, 不能再重新倒回去處理.此外,它也不能同時(shí)訪問處理2個(gè)tag. sax分析器在實(shí)現(xiàn)時(shí),只是順序地檢查xml文檔中的字節(jié)流,判斷當(dāng)前字節(jié)是xml語法中的哪一部分,檢查是否符合 xml語法并且觸發(fā)相應(yīng)的事件.對于事件處理函數(shù)的本身,要由應(yīng)用程序自己來實(shí)現(xiàn). SAX解析器采用了基于事件的模型,它在解析XML文檔的時(shí)候可以觸發(fā)一系列的事件,當(dāng)發(fā)現(xiàn)給定的tag的時(shí)候,它可以激活一個(gè)回調(diào)方法,告訴該方法制定的標(biāo)簽已經(jīng)找到。 同DOM分析器相比,sax分析器對xml文檔的處理缺乏靈活性,但對于只訪問xml文檔中的數(shù)據(jù)而不改變應(yīng)用程序 來說,sax分析器的效率會很高. sax對內(nèi)存要求也比較低. 
 優(yōu)點(diǎn):1、無需將整個(gè)文檔加載到內(nèi)存中,所以內(nèi)存消耗少. 2 、推模型允許注冊多個(gè)contentHandler. 缺點(diǎn):1、沒有內(nèi)置的文檔導(dǎo)航支持. 2、不能隨機(jī)訪問xml文檔. 3、不支持原地修改xml. 4、不支持名字空間作用域. 適合:對xml文檔讀取數(shù)據(jù) 
 DOM DOM解析器把XML文檔轉(zhuǎn)化為一個(gè)包含其內(nèi)容的樹,并可以對樹進(jìn)行遍歷。也就是說,通過DOM樹,應(yīng)用程序可以對XML文檔進(jìn)行隨機(jī)訪問。這種訪問方式給應(yīng)用程序的開發(fā)帶來了很大的靈活性,它可以任意地控制整個(gè)XML文檔中的內(nèi)容.用DOM解析模型編程容易,開發(fā)人員只需要調(diào)用建樹的指令,然后利用navigation APIs訪問所需的樹節(jié)點(diǎn)來完成任務(wù)。可以很容易的添加和修改樹中的元素。然而由于使用DOM解析器的時(shí)候需要處理整個(gè)XML文檔,所以對性能和內(nèi)存的要求比較高,尤其是遇到很大的XML文件的時(shí)候。由于它的遍歷能力,DOM解析器常用于XML文檔需要頻繁的改變的服務(wù)中。 
 優(yōu)點(diǎn):1、豐富的API集合,可以輕松導(dǎo)航. 2、 整個(gè)DOM樹加載到內(nèi)存,允許隨機(jī)訪問. 缺點(diǎn):1、整個(gè)xml文檔必須一次解析完. 2、整個(gè)DOM樹都加載到內(nèi)存中,內(nèi)存要求高. 3、一般的DOM節(jié)點(diǎn)對于必須為所有節(jié)點(diǎn)創(chuàng)建對象的對象類型綁定不太理想. 適用:對xml文檔修改數(shù)據(jù) 
 JDOM JDOM是處理xml的純java api.使用具體類而不是接口.JDOM具有樹的遍歷,又有SAX的java規(guī)則.JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經(jīng)熟悉這些類的Java開發(fā)者的使用。 JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗(yàn)證輸入XML文檔(盡管它還可以將以前構(gòu)造的DOM表示作為輸入)。它包含一些轉(zhuǎn)換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發(fā)布的開放源碼。 
 優(yōu)點(diǎn):1、是基于樹的處理xml的java api,把樹加載到內(nèi)存中. 2、沒有向下兼容的限制,所以比DOM簡單. 3、速度快. 4、具有SAX的java 規(guī)則. 缺點(diǎn):1、不能處理大于內(nèi)存的文檔. 2、JDOM表示XML文檔邏輯模型,不能保證每個(gè)字節(jié)真正變換. 3、 針對實(shí)例文檔不提供DTD與模式的任何實(shí)際模型. 4、 不支持于DOM中相應(yīng)遍歷包. 適用:自行選擇 
 DOM4J DOM4J有更復(fù)雜的api,所以dom4j比jdom有更大的靈活性.DOM4J性能最好,連Sun的JAXM也在用DOM4J.目前許多開源項(xiàng)目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就采用DOM4J. 優(yōu)點(diǎn):1、靈活性最高 2、易用性和功能強(qiáng)大、性能優(yōu)異 缺點(diǎn):1、復(fù)雜的api 2、移植性差 適用:自行選擇 | 
|  |