sax/dom/jdom/dom4j的區別?_SAX

來源:互聯網
上載者:User

SAX

sax分析器在對xml文檔進行分析時,觸發一系列的事件,應用程式通過事件處理函數實現對xml文檔的訪問.

因為事件觸發是有時序性的,所以sax分析器提供的是一種對xml文檔的順序訪問機制,對於已經分析過的部分,

不能再重新倒回去處理.此外,它也不能同時訪問處理2個tag.

sax分析器在實現時,只是順序地檢查xml文檔中的位元組流,判斷當前位元組是xml文法中的哪一部分,檢查是否符合

xml文法並且觸發相應的事件.對於事件處理函數的本身,要由應用程式自己來實現. SAX解析器採用了基於事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以啟用一個回調方法,告訴該方法制定的標籤已經找到。

同DOM分析器相比,sax分析器對xml文檔的處理缺乏靈活性,但對於只訪問xml文檔中的資料而不改變應用程式

來說,sax分析器的效率會很高.

sax對記憶體要求也比較低.

 

優點:1、無需將整個文檔載入到記憶體中,所以記憶體消耗少.

       2 、推模型允許註冊多個contentHandler.

缺點:1、沒有內建的文檔導航支援.

       2、不能隨機訪問xml文檔.

       3、不支援原地修改xml.

       4、不支援名字空間範圍.

適合:對xml文檔讀取資料

 

DOM

DOM解析器把XML文檔轉化為一個包含其內容的樹,並可以對樹進行遍曆。也就是說,通過DOM樹,應用程式可以對XML文檔進行隨機訪問。這種訪問方式給應用程式的開發帶來了很大的靈活性,它可以任意地控制整個XML文檔中的內容.用DOM解析模型編程容易,開發人員只需要調用建樹的指令,然後利用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由於使用DOM解析器的時候需要處理整個XML文檔,所以對效能和記憶體的要求比較高,尤其是遇到很大的XML檔案的時候。由於它的遍曆能力,DOM解析器常用於XML文檔需要頻繁的改變的服務中。

 

優點:1、豐富的API集合,可以輕鬆導航.

        2、 整個DOM樹載入到記憶體,允許隨機訪問.

缺點:1、整個xml文檔必須一次解析完.

        2、整個DOM樹都載入到記憶體中,記憶體要求高.

        3、一般的DOM節點對於必須為所有節點建立對象的物件類型綁定不太理想.

適用:對xml文檔修改資料

 

JDOM

JDOM是處理xml的純java api.使用具體類而不是介面.JDOM具有樹的遍曆,又有SAX的java規則.JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用介面。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發人員的使用。

JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(儘管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文字文件。JDOM是在Apache許可證變體下發布的開放源碼。

 

優點:1、是基於樹的處理xml的java api,把樹載入到記憶體中.

        2、沒有向下相容的限制,所以比DOM簡單.

        3、速度快.

        4、具有SAX的java 規則.

缺點:1、不能處理大於記憶體的文檔.

        2、JDOM表示XML文檔邏輯模型,不能保證每個位元組真正變換.

        3、 針對執行個體文檔不提供DTD與模式的任何實際模型.

        4、 不支援於DOM中相應遍曆包.

適用:自行選擇

 

DOM4J

DOM4J有更複雜的api,所以dom4j比jdom有更大的靈活性.DOM4J效能最好,連Sun的JAXM也在用DOM4J.目前許多開源項目中大量採用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML設定檔。如果不考慮可移植性,那就採用DOM4J.

優點:1、靈活性最高

     2、易用性和功能強大、效能優異

缺點:1、複雜的api

     2、移植性差

適用:自行選擇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.