Java6.0野馬(Mustang,Java 6.0代號)相比老虎(Tiger,Java 5.0代號)來說,從性能的提升、腳本語言(Javascript、JRuby、Groovy)的支持、對java.io.File的擴展到桌面應用的增強等各個方面,本領着實大了不少。Java 6.0對XML支持的新特性有許多方面。比如StAX、針對XML-Web服務的Java架構(JAX-WS)2.0、針對XML綁定的 API(JAXB)2.0、XML數字簽名API,甚至還支持SQL:2003 'XML'數據類型。
StAX是Streaming API for XML的縮寫,是一種針對XML的流式拉分析API。關於對XML進行分析(或解析)的技術,大家一定都不陌生了。
在Java 6.0之前,就已經有四種:
1. DOM:Document Object Model
2. SAX:Simple API for XML
3. JDOM:Java-based Document Object Model
4. DOM4J:Document Object Model for Java
StAX採用流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持。
優點: 1、接口簡單,使用方便。 2、採用流模型分析方式,有較好的性能。
缺點: 1、單向導航,不支持XPath,很難同時訪問同一文檔的不同部分。
爲了比較這五種方式在解析XML文檔時的性能表現,我們來創建三個不同大小的XML文檔:smallusers.xml(100KB)、 middleusers.xml(1MB)、bigusers.xml(10MB)。我們分別用以上五種解析方式對這三個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 Stream和StAX Event,DOM和DOM4J也有着不錯的表現。性能最差的是JDOM。
所以,如果你的應用程序對性能的要求很高,SAX當然是首選。如果你需要訪問和控制任意數據的功能,DOM是個很好的選擇,而對Java開發人員來講,DOM4J是更好的選擇。 如果只需要做XML文檔解析的話,綜合性能、易用性、面向對象特徵等各方面來衡量,StAX Event無疑是最好的選擇。
原文:http://www.cnblogs.com/hedalixin/archive/2011/12/04/2275453.html