1. 程式人生 > >XMl資源解析方式

XMl資源解析方式

最近讀到的一篇好文,不敢獨吞,拿來分享。

XML (eXtensible Markup Language) 意為可擴充套件標記語言,它已經是軟體開發行業中大多數程式設計師和廠商用以選擇作為資料傳輸的載體。本文作者對於 Java 處理 XML 的幾種主流技術進行一些總結和介紹,希望幫助那些有不同需求的開發人員對於 XML 處理技術的作出最優的選擇。

最初,XML 語言僅僅是意圖用來作為 HTML 語言的替代品而出現的,但是隨著該語言的不斷髮展和完善,人們越來越發現它所具有的優點:例如標記語言可擴充套件,嚴格的語法規定,可使用有意義的標記,內容 儲存和表現分離等等優勢註定了該語言從誕生之日起就會走向輝煌。 XML 語言在成為 W3C 標準之後進入到了一個快速發展的時期,當然它本身所具有的一系列優點和優勢也註定了各大技術廠商對它的偏愛,Java 作為軟體行業的一種開發技術也迅速作出了反應,出現了多種對 XML 支援的工具,本文將會從這個角度對 Java 處理 XML 的幾種主流技術進行介紹,希望能對您有所幫助。在這篇文章中,您將會得到以下資訊:

Java 提供了哪些優秀的類庫及工具便於程式設計師對 XML 進行處理 ?
有了 DOM 了,其它工具類庫還有必要麼 ?
幾個小例程帶你快速瞭解這三種解析方式
Java 有哪些優秀的類庫及工具便於程式設計師對 XML 進行處理 ?

大名鼎鼎的 DOM
綠色環保的 SAX
默默無聞的 Digester
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 的可靠方法。

適用範圍 : 有將 XML 文件直接轉換為 JavaBean 需求。

應用示例

下面給出一段用於解析的 XML 片段:

?
01 02 03 04 05 06 07 08 09 10 11 <?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id="002"> <title>Learning XML</title> <author>Erik T. Ray</author> </book> </books>

DOM 解析 XML

Java 中的 DOM 介面簡介: JDK 中的 DOM API 遵循 W3C DOM 規範,其中 org.w3c.dom 包提供了 Document、DocumentType、Node、NodeList、Element 等介面, 這些介面均是訪問 DOM 文件所必須的。我們可以利用這些介面建立、遍歷、修改 DOM 文件。

javax.xml.parsers 包中的 DoumentBuilder 和 DocumentBuilderFactory 用於解析 XML 文件生成對應的 DOM Document 物件。

javax.xml.transform.dom 和 javax.xml.transform.stream 包中 DOMSource 類和 StreamSource 類,用於將更新後的 DOM 文件寫入 XML 檔案。

下面給出一個運用 DOM 解析 XML 的例子:

?

相關推薦

XMl資源解析方式

最近讀到的一篇好文,不敢獨吞,拿來分享。 XML (eXtensible Markup Language) 意為可擴充套件標記語言,它已經是軟體開發行業中大多數程式設計師和廠商用以選擇作為資料傳輸的載體。本文作者對於 Java 處理 XML 的幾種主流技術進

Java中XML解析方式

轉載自 : https://www.cnblogs.com/longqingyang/p/5577937.html 簡介   XML是一種通用的資料交換格式,它的平臺無關性、語言無關性、系統無關性、給資料整合與互動帶來了極大的方便。XML在不同的語言環境中解析方式都是一

XML解析方式3——JDOM方式解析

XML的解析方式 DOM解析 SAX解析 JDOM解析 JDOM解析方式 【優點】 使用具體類而不是介面,簡化了DOM的API。 大量使用了Java集合類,方便了Java開發人員。 【缺點】 沒有較好的靈活性。 效能較差。 相關程式碼 XmlDo

XML解析方式4——DOM4J方式解析

參考四種生成和解析XML文件的方法詳解 XML的解析方式 DOM解析 SAX解析 DOM4J解析 【優點】 大量使用了Java集合類,方便Java開發人員,同時提供一些提高效能的替代方法。 支援XPath。 有很好的效能。 【缺點】 4. 大量使用了介面

XML解析方式-DMO和SAX

支援DOM和SAX兩種解析技術的JAR包 SUN公司:JAXP DOM4J公司:DOM4J DOM解析方式 把XML文件載入到記憶體中,形成樹狀結構 特點:文件過大,容易產生記憶體溢位的問題,但是可以進行增刪改查的操作 SAX解析方式 邊讀邊解析,基於事件驅動 特點:

關於Gson和XML解析方式

JSON (官網) 是一種文字形式的資料交換格式,它比XML更輕量、比二進位制容易閱讀和編寫,調式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的類庫有:JSON-Java、Gson、Jackson、FastJson等。 該系列其它文章 注

XMLXML解析方式(dom+sax)以及解析器(dom4j+jaxp+jdom)

1.xml的解析方式(技術):dom 和 sax >>dom方式解析: 根據xml的層級結構在記憶體中分配一個樹形結構,把xml的標籤、屬性和文字都封裝成物件 **優點:實現增刪改操作很方便 **缺點:如果檔案過大會造成記憶體溢位 **解析過程: >&

xml中倆種解析方式

print source 想要 tree urn 由於 oot con 一個 兩種解析方式 1、from xml.etree import ElementTree as ET 利用ElementTree模塊下的xml方法可以把一個字符串類型的東西轉換成Element類,

xml的兩種解析方式

name 字符 system main ner exce pub void ref xml解析是日常項目中用到比較多的技能。不管是配置參數或者數據都能夠保存在xml文件裏。同一時候也能夠將xml作為數據傳輸的一種格式。本文將介紹兩種基本解析方式:xml字符串解析和xml

XML的四種解析方式

ron 合並 parent 問題 private entity cti fin system 基礎方法: DOM、SAX DOM:與平臺無關的官方解析方式 SAX:基於事件驅動的解析方式 擴展方法:JDOM、DOM4J(在基礎的方法上擴展的,只有Java能夠使用

帶URL的XML解析方式

add body xsd manager clas pos pen turn table XmlDocument xml = new XmlDocument(); xml.LoadXml(responseString); XmlNode root = xml.Documen

xml兩種解析方式(封裝了獲得文件和回寫)

開始時間:2018年10月6日13:16:37 結束時間:2018年10月6日14:26:25 累計時間:1  xml解析: 這一篇挺好 https://blog.csdn.net/CristianoJason/article/details/51777853

java對於xml檔案的四種解析方式

概述 XML是一種通用的資料交換格式,它的平臺無關性、語言無關性、系統無關性、給資料整合與互動帶來了極大的方便。XML在不同的語言環境中解析方式都是一樣的,只不過實現的語法不同而已。 XML的解析方式分為四種:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中

解析複雜xml資源獲取目標引數值

這個是上個月工作中除錯介面的時候用到的,今天得空給簡單整理下, 需求是:從返回的xml報文中讀取IMAGENUMBER欄位(多個),取其最大值。 先擷取報文中的一部分感受下: 下面開始對報文進行解析,直接上程式碼: /**      * @para

XML解析方式之實體類解析

/// <summary> /// XML字串解析實體類方法 /// </summary> public class StringXML { public StringXML() { } public Stri

Java解析xml檔案的方式

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; impo

XML解析——Java中XML的四種解析方式(轉載 by 龍清揚)

很大的 throws 獲得 input 大名 tst tag ttr 技術 XML是一種通用的數據交換格式,它的平臺無關性、語言無關性、系統無關性、給數據集成與交互帶來了極大的方便。XML在不同的語言環境中解析方式都是一樣的,只不過實現的語法不同而已。

mybatis 解析配置檔案(一)之XML的DOM解析方式

簡介 在之前的文章《mybatis 初步使用(IDEA的Maven專案, 超詳細)》中, 講解了mybatis的初步使用, 並總結了以下mybatis的執行流程: 通過 Resources 工具類讀取 mybatis-config.xml, 存入 Reader; SqlSessionFactoryBuil

xml的常見四種解析方式

xml的概念: XML(EXtensible Markup Language),可擴充套件標記語言,一種資料的交換格式。它的平臺無關性、語言無關性、系統無關性 給資料的整合、儲存和互動帶來了極大的方便。在不同的語言中它的解析方式是一樣的,只是語法不一樣。 xml和htm

xml檔案四中解析方式

       XML現在已經成為一種通用的資料交換格式,平臺的無關性使得很多場合都需要用到XML。小編將將簡單介紹一下Java解析XML的四中方法。      基本的解析方式有兩種,一種叫DOM,另一種