Java處理XML的三種主流技術

    大名鼎鼎的 DOM
說它大名鼎鼎但是一點不爲過,DOM 是 W3C 處理 XML 的標準 API,它是許多其它與 XML 處理相關的標準的基礎,不只是 Java,其它諸如 Javascript,PHP,MS .NET 等等語言都實現了該標準, 成爲了應用最爲普遍的 XML 處理方式。固然,爲了能提供更多更增強大的功能,Java 對於 DOM 直接擴展工具類有不少,好比不少 Java 程序員耳熟能詳的 JDOM,DOM4J 等等, 它們基本上屬於對 DOM 接口功能的擴充,保留了不少 DOM API 的特性,許多本來的 DOM 程序員甚至都沒有任何障礙就熟練掌握了另外二者的使用,直觀、易於操做的方式使它深受廣大 Java 程序員的喜好。

綠色環保的 SAX
SAX 的應運而生有它特殊的須要,爲何說它綠色環保呢,這是由於 SAX 使用了最少的系統資源和最快速的解析方式對 XML 處理提供了支持。 但隨之而來繁瑣的查找方式也給廣大程序員帶來許多困擾,經常使人頭痛不已,同時它對 XPath 查詢功能的支持,使人們對它又愛又恨。

默默無聞的 Digester:XML 的 JavaBean 化
Digester 是 apache 基金組織下的一個開源項目,筆者對它的瞭解源於對 Struts 框架的研究,是否有不少程序員想要一解各大開源框架的設計甚至想要本身寫一個功能強大的框架時會碰到這樣一個難題: 這些形形色色的用 XML 語言標記的框架配置文件,框架底層是用什麼技術來解析呢? DOM 解析耗費時間,SAX 解析又過於繁瑣,何況每次解析系統開銷也會過大, 因而,你們想到須要用與 XML 結構相對應的 JavaBean 來裝載這些信息,由此 Digester 應運而生。它的出現爲 XML 轉換爲 JavaBean 對象的需求帶來了方便的操做接口,使得更多的相似需求獲得了比較完美的解決方法 再也不須要程序員本身實現此類繁瑣的解析程序了。與此同時 SUN 也推出了 XML 和 JavaBean 轉換工具類 JAXB,有興趣的讀者能夠自行了解。
程序員

  
三種解析方式比較

DOM
優缺點:實現 W3C 標準,有多種編程語言支持這種解析方式,而且這 種方法自己操做上簡單快捷,十分易於初學者掌握。其處理方式是將 XML 整個做爲相似樹結構的方式讀入內存中以便操做及解析,所以支持應用程序對 XML 數據的內容和結構進行修改,可是同時因爲其須要在處理開始時將整個 XML 文件讀入到內存中去進行分析,所以其在解析大數據量的 XML 文件時會遇到相似於內存泄露以及程序崩潰的風險,請對這點多加註意。

適用範圍:小型 XML 文件解析、須要全解析或者大部分解析 XML、須要修改 XML 樹內容以生成本身的對象模型

SAX
SAX 從根本上解決了 DOM 在解析 XML 文檔時產生的佔用大量資源的問題。其實現是經過相似於流解析的技術,通讀整個 XML 文檔樹,經過事件處理器來響應程序員對於 XML 數據解析的需求。因爲其不須要將整個 XML 文檔讀入內存當中,它對系統資源的節省是十分顯而易見的,它在一些須要處理大型 XML 文檔以及性能要求較高的場合有起了十分重要的做用。支持 XPath 查詢的 SAX 使得開發人員更加靈活,處理起 XML 來更加的駕輕就熟。可是同時,其仍然有一些不足之處也困擾廣大的開發人員:首先是它十分複雜的 API 接口使人望而生畏,其次因爲其是屬於相似流解析的文件掃描方式,所以不支持應用程序對於 XML 樹內容結構等的修改,可能會有不便之處。

適用範圍:大型 XML 文件解析、只須要部分解析或者只想取得部分 XML 樹內容、有 XPath 查詢需求、有本身生成特定 XML 樹對象模型的需求

Digester/JAXB
優缺點 : 因爲其是在上述二者的基礎上衍生出來的工具類,爲的是知足將 XML 轉換爲 JavaBean 的特殊需求,故而沒有什麼特別明顯的優缺點。做爲大名鼎鼎的開源框架 Struts 的 XML 解析工具 Digester,爲咱們帶來了將 XML 轉換爲 JavaBean 的可靠方法。
web

適用範圍 : 有將 XML 文檔直接轉換爲 JavaBean 需求。apache

相關文章
相關標籤/搜索