dom sax stax解析xml性能分析

Java6.0野馬(MustangJava 6.0代號)相比老虎(TigerJava 5.0代號)來說,從性能的提升、腳本語言(JavascriptJRubyGroovy)的支持、對java.io.File的擴展到桌面應用的增強等各個方面,本領着實大了不少。Java 6.0XML支持的新特性有許多方面。比如StAX、針對XML-Web服務的Java架構(JAX-WS2.0、針對XML綁定的 APIJAXB2.0XML數字簽名API,甚至還支持SQL:2003 'XML'數據類型。  

StAXStreaming API for XML的縮寫,是一種針對XML的流式拉分析API。關於對XML進行分析(或解析)的技術,大家一定都不陌生了。

Java 6.0之前,就已經有四種:    

1. DOMDocument Object Model   

2. SAXSimple API for XML   

3. JDOMJava-based Document Object Model   

4. DOM4JDocument Object Model for Java       

StAX採用流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持。 

優點: 1、接口簡單,使用方便。 2、採用流模型分析方式,有較好的性能。

缺點: 1、單向導航,不支持XPath,很難同時訪問同一文檔的不同部分。

爲了比較這五種方式在解析XML文檔時的性能表現,我們來創建三個不同大小的XML文檔:smallusers.xml100KB)、 middleusers.xml1MB)、bigusers.xml10MB)。我們分別用以上五種解析方式對這三個XML進行解析,然後打印出所有 的用戶信息,並分別計算它們所用的時間。  

單位:s(秒)

       100KB           1MB            10MB     
DOM              0.146s         0.469s          5.876s    
SAX              0.110s         0.328s          3.547s    
JDOM             0.172s         0.756s          45.447s   
DOM4J            0.161s         0.422s          5.103s    
StAX Stream      0.093s         0.334s          3.553s    
StAX Event       0.131s         0.359s          3.641s     

由上面的測試結果可以看出,性能表現最好的是SAX,其次是StAX StreamStAX EventDOMDOM4J也有着不錯的表現。性能最差的是JDOM。 

         所以,如果你的應用程序對性能的要求很高,SAX當然是首選。如果你需要訪問和控制任意數據的功能,DOM是個很好的選擇,而對Java開發人員來講,DOM4J是更好的選擇。 如果只需要做XML文檔解析的話,綜合性能、易用性、面向對象特徵等各方面來衡量,StAX Event無疑是最好的選擇。


原文:http://www.cnblogs.com/hedalixin/archive/2011/12/04/2275453.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章