2013年4月30日 星期二

JAVA剖析XML的一種最佳方法DOM4J


DOM4J是目前在XML剖析方面是最優秀的(Hibernate、Sun的JAXM也都使用DOM4J來剖析XML),它合併了許多超出基本XML文件表示的功能,包括合併XPath的使用、XML Schema支援以及用於大資料文件或遵循文件基於事件的處理。

使用方法

目前最新DOM4J包下載網址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/Dom4J-1.6.1.zip   解開後,僅操作XML文件的話把Dom4J-1.6.1.jar此檔案加入程式中即可,倘若需要使用XPath的話必須加入檔案Jaxen-1.1-beta-7.jar。

效能測試

        環境:AMD4400+ 2.0+GHz主頻 JDK6.0
        運行參數:-Xms400m -Xmx400m
        XML文件大小:10.7M
        結果:DOM: >581297ms、SAX: 8829ms、JDOM: 581297ms、DOM4J: 5309ms,時間包括IO的,只是進行了簡單的測試,僅供參考。

比較

  • DOM

DOM是基於樹的結構,通常需要載入整份文件和構造DOM的樹狀,然後才能開始工作。
優點:
  1. 由於整棵樹在記憶體中,因此可以對XML文件隨機訪問。
  2. 可以對XML文件進行修改操作。
  3. 相較SAX,DOM使用也更簡單。
缺點:
  1. 整個文件必須一次性剖析完。
  2. 由於整個文件都需要載入記憶體,對於資料量大文件成本高。

  • SAX

SAX是類似串流的資料,它基於事件驅動的,因此無需將整個文件載入記憶體,使用者只需要監聽自己感興趣的事件即可。
優點:
  1. 無須將整個XML文件載入記憶體,因此消耗記憶體少。
  2. 可以註冊多個ContentHandler。
缺點:
  1. 不能隨機訪問XML中的節點。
  2. 不能修改文件。
  • JDOM
JDOM是純Java的處理XML的API,其API中大量使用Collections類別,它利用強而有力的JAVA語言的諸多特性(方法覆載(overload)、集合概念以及映射),把SAX和DOM的功能結合起來。
優點:
  1. DOM方式的優點
  2. 具有SAX的Java規則
  3. 運用輕鬆、簡單方式處理XML文件。
缺點:
  1. DOM方式的缺點
  • DOM4J
DOM4J以JDOM為基礎,設計上保有JDOM的易用性,避免SAX和DOM的缺點,設計理念為更好的DOM實現,可以說是使用優點避免缺點。
優點:
  1. 容易使用
  2. 效能最好。
  3. 靈活性、功能強大等優勢
    在測試可看出,相較於其它三個XML剖析方式中,此DOM4J方式為最優秀的一個。
    若有剖析程式的問題,可至參考出處查看。

    參考出處:
    http://kree.iteye.com/blog/668280
    http://www.open-open.com/lib/view/open1346822899256.html

    沒有留言:

    張貼留言