1: DOM
??? DOM 是用與平臺和語言無關(guān)的方式表示 XML 文檔的官方
W3C 標準。DOM
是以層次結(jié)構(gòu)組織的節(jié)點或信息片斷的集合。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何
工作。(所以其劣勢就是基與大文件的加載速度很慢,因為它是需要全部加載后才操作的).
由于它是基于信息層次的,因而 DOM 被認為是基于樹或基于對象的。DOM 以及廣義的基于樹的處理具有幾個優(yōu)點。
??? 首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。它還可以在任何時候在樹中上下導(dǎo)航,而不是像 SAX 那樣是一次性的處理。DOM 使用起來也要簡單得多。
??? 另一方面,對于特別大的文檔,解析和加載整個文檔可能很慢且很耗資源,因此使用其他手段來處理這樣的數(shù)據(jù)會更好。這些基于事件的模型,比如 SAX.
??? 2:SAX
???
這種處理的優(yōu)點非常類似于流媒體的優(yōu)點。分析能夠立即開始,而不是等待所有的數(shù)據(jù)被處理。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時檢查數(shù)據(jù),因此不需要將數(shù)據(jù)
存儲在內(nèi)存中。這對于大型文檔來說是個巨大的優(yōu)點。事實上,應(yīng)用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX
還比它的替代者 DOM 快許多。
???? 3:JDOM
??? JDOM的目的是成為 Java 特定文檔模型,它簡化與 XML 的交互并且比使用 DOM 實現(xiàn)更快。
??? JDOM 與 DOM 主要有兩方面不同。首先,JDOM 僅使用具體類而不使用接口。這在某些方面簡化了 API,但是也限制了靈活性。第二,API 大量使用了 Collections 類,簡化了那些已經(jīng)熟悉這些類的 Java 開發(fā)者的使用。
??? JDOM 文檔聲明其目的是“使用 20%(或更少)的精力解決
80%(或更多)Java/XML 問題”(根據(jù)學(xué)習(xí)曲線假定為 20%)。JDOM 對于大多數(shù) Java/XML
應(yīng)用程序來說當然是有用的,并且大多數(shù)開發(fā)者發(fā)現(xiàn) API 比 DOM 容易理解得多。JDOM 還包括對程序行為的相當廣泛檢查以防止用戶做任何在
XML 中無意義的事。然而,它仍需要您充分理解 XML 以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學(xué)習(xí) DOM 或
JDOM 接口都更有意義的工作。
??? JDOM 自身不包含解析器。它通常使用 SAX2
解析器來解析和驗證輸入 XML 文檔(盡管它還可以將以前構(gòu)造的 DOM 表示作為輸入)。它包含一些轉(zhuǎn)換器以將 JDOM 表示輸出成 SAX2
事件流、DOM 模型或 XML 文本文檔。JDOM 是在 Apache 許可證變體下發(fā)布的開放源碼。
??4: DOM4J
??? 雖然 DOM4J 代表了完全獨立的開發(fā)結(jié)果,但最初,它是 JDOM
的一種智能分支。它合并了許多超出基本 XML 文檔表示的功能,包括集成的 XPath 支持、XML Schema
支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構(gòu)建文檔表示的選項,它通過 DOM4J API 和標準 DOM
接口具有并行訪問功能。從 2000 下半年開始,它就一直處于開發(fā)之中。
??? 為支持所有這些功能,DOM4J
使用接口和抽象基本類方法。DOM4J 大量使用了 API 中的 Collections
類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然 DOM4J 付出了更復(fù)雜的 API
的代價,但是它提供了比 JDOM 大得多的靈活性。
??? 在添加靈活性、XPath 集成和對大文檔處理的目標時,DOM4J
的目標與 JDOM 是一樣的:針對 Java 開發(fā)者的易用性和直觀操作。它還致力于成為比 JDOM 更完整的解決方案,實現(xiàn)在本質(zhì)上處理所有
Java/XML 問題的目標。在完成該目標時,它比 JDOM 更少強調(diào)防止不正確的應(yīng)用程序行為。
??? DOM4J 是一個非常非常優(yōu)秀的Java XML
API,具有性能優(yōu)異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的 Java 軟件都在使用
DOM4J 來讀寫 XML,特別值得一提的是連 Sun 的 JAXM 也在用 DOM4J. Hibernate 也用 DOM4J 來讀取
XML 配置文件。如果不考慮可移植性,那就采用DOM4J吧!
??5:總述
DOM是基于平臺、語言無關(guān)的官方W3C標準。基于樹的層次,其優(yōu)點是可以移植,編程容易,開發(fā)人員只需要調(diào)用建樹的指令。其缺點是加載大文件不理想。
SAX是基于事件模型的,它在解析 XML 文檔的時候可以觸發(fā)一系列的事件,當發(fā)現(xiàn)給定的tag的時候,它可以激活一個回調(diào)方法,告訴該方法制定的標簽已經(jīng)找到。類似與流媒體的解析方式,所以在加載大文件時效果不錯。
JDOM是想成為 Java 特定文檔模型。它簡化與 XML 的交互并且比使用 DOM 實現(xiàn)更快。使用的是具體類不使用接口,運用了大量的COllections類,方便程序員。
DOM4J是一個獨立的開發(fā)結(jié)果。是一個非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。推薦使用。