摘 要 在計算機領域,利用Java解析xml文件有著實際利用價值與現實意義。文章對XML語言進行了簡要的介紹,XML作為簡單的配置文件可以幫助我們更高效地運行程序。在介紹了XML的基本概念和主要應用的基礎上,進一步分析了Java解析XML文檔的兩種主流經典方法:一種是文檔對象模型DOM(Document Object Model),另外一種是XML簡單接口SAX(Simple API for XML)。
關鍵詞 XML作用;XML解析;DOM;Java;SAX
中圖分類號:TP311 文獻標識碼:A 文章編號:1671-7597(2014)06-0120-01
現代社會所使用的程序和數據越來越大,對計算機硬件的需求標準越來越高。當我們用到的數據量不大,對硬件的要求不高的時候,我們不希望再使用龐大的數據庫,而是希望能夠找到能夠減輕系統負擔的方法。XML作為簡單的配置文件可以幫助我們更高效地運行程序,它的獨立于平臺的特性是它最具特色的地方。XML可以將內容和表現分離,同一個xml源文檔只寫一次,但可以用不同的方法表現出來。
1 XML概述
1.1 XML簡介
可擴展標記語言(Extensible Markup Language,XML)是一種標記語言,它為文檔編碼格式定義了一系列的標準規則,這些規則簡單明了,不論是用戶還是機器都能夠很容易的識別。XML的設計目標是為了提高因特網信息的簡潔性、普適性和可用性。盡管XML最初主要用于文檔方面,但是現在它可以被廣泛地應用于任意數據結構的表示,比如web服務等。
根據定義,XML文檔是由一系列字符構成。在一個XML文檔中,幾乎每一個合法的Unicode字符都可能出現。XML允許使用任何Unicode-defined編碼,和任何其他也出現在Unicode編碼的字符。XML處理器還提供了一種機制,可以在沒有任何先驗知識的情況下非常可靠地確定哪些編碼可以使用。
XML文檔由標記和內容組成,它們可以通過簡單的語法規則進行區分。一般來說,標記以< >作為符號,即
1.2 當前XML的主要應用
最近幾年已經用XML開發了數以百計的文檔格式,包括RSS、Atom、SOAP、XHTML等。基于XML格式的工具已經成為許多辦公軟件的默認工具,包括微軟辦公室(Office Open XML)、OpenOffice.org、LibreOffice和蘋果的iwork。XML也被用作通信協議的基本語言,比如XMPP。微軟的應用程序使用XML作為配置文件。蘋果公司已經實現了基于XML的注冊。
XML業已成為互聯網數據通信的主流方式之一。RFC3023規定了互聯網媒體用XML發送信息的構造方式。它還定義了以XML設計應用程序和以XML設計文檔的媒體類型。
XML具有如下特色:1)用來進行更有意義的搜索;2)開發靈活的Web應用軟件;3)集成不同來源的數據;4)多種應用得到的數據;5)數據的本地計算和處理;6)數據的多樣型顯示;7)數據的粒狀更新;8)在Web上發布數據;9)升級性;10)開放的標準。
2 Java解析XML的兩種經典方法
2.1 DOM:基于對象的XML解析技術
DOM是用與平臺和語言無關的方式表示XML文檔的W3C標準,它是以層次結構組織的節點或信息片斷的集合,它是一種基于樹型的解析技術,將XML文檔一次性解析,生成一個位于內存中的對象樹用以描述該文檔。
利用Java的DOM解析XML需要經過以下幾個步驟:1)得到DOM解析器的工廠實例;2)從DOM工廠獲得DOM解析器;3)把要解析的XML文檔轉化為輸入流;4)解析XML文檔的輸入流;5)得到XML文檔的根節點;6)得到節點的子節點;7)取得節點的屬性值;8)輪循子節點。
2.2 SAX:基于事件驅動的XML解析技術
SAX解析器采用了基于事件的模型,與DOM不同的是它并不是由W3C官方所提出的標準。SAX是一種輕量型的方法,它不需要將數據全部載入內存而只在讀取數據時檢查數據。對于大型文檔具有顯著優勢。它按照XML文件的順序一步一步的來解析,它將XML文檔分解為一系列的事件,由獨立的事件處理器來決定處理方式。
在JAVA的SAX接口中,事件源是org.xml.sax包中的XMLReader,它通過parser()方法來解析XML文檔,并根據文檔的內容產生事件。而事件處理器則是org.xml.sax包中的ContentHander、DTDHander、ErrorHandler,以及EntityResolver這4個接口,它們分別處理事件源在解析XML文檔過程中產生的不同種類的事件。
2.3 兩種解析方式的對比
SAX解析器是基于事件驅動的,無需將整個文檔載入內存,系統開銷低;不需要獲知整個XML數據,使用者只需要監聽自己感興趣的事件即可,處理速度快。但不能隨機訪問XML中的節點,只支持順序訪問,而且不能修改文檔。
DOM解析器把XML文檔轉化為一個包含其內容的樹,將整棵樹讀入內存中,可以對樹進行遍歷,可以對XML文檔隨機訪問,可以修改文檔,而且操作要比SAX簡單,容易上手。然而由于使用DOM解析器的時候需要將整個文檔一次性解析完,內存代價比較高,相對于SAX解析器,對于大文檔的成本要高得多。
3 總結
XML具有重要的作用,DOM和SAX這兩種解析技術也是各有特點。我們在Java平臺上解析時,應該根據不同的需求選擇不同的解析方法。當應用程序對文檔的修改和隨機訪問比較多時,可以優先考慮DOM解析。SAX是讀取和操作XML數據的更快速、更輕量的方法。
參考文獻
[1]李剛.瘋狂XML講義[M].北京:電子工業出版社,2009.
[2]張迪,朱敏,張凌立.基于SAX的XML解析與應用[J].計算機與數字工程,2008,36(7):103-106.
[3]鄧超,熊選東.一種基于DOM的Web信息提取方法[J].微型電腦應用,2007,23(3): 49-52.
[4]邢詒俊.淺談XML解析技術[J].華南金融電腦,2009(11):51-52.
作者簡介
張潔(1981-),女,鎮江高等職業技術學校二級教師。