教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

java培訓(xùn)之XML解析器介紹

更新時間:2016年06月23日11時50分 來源:傳智播客java培訓(xùn)學(xué)院 瀏覽次數(shù):

操作XML文檔概述

 
1 如何操作XML文檔
XML文檔也是數(shù)據(jù)的一種,對數(shù)據(jù)的操作也不外乎是“增刪改查”。也被大家稱之為“CRUD”。
  • C:Create;
  • R:Retrieve;
  • U:Update;
  • D:Delete
 
2 XML解析技術(shù)
XML解析方式分為兩種:DOM(Document Object Model)和SAX(Simple API for XML)。這兩種方式不是針對Java語言來解析XML的技術(shù),而是跨語言的解析方式。例如DOM還在Javascript中存在!
DOM是W3C組織提供的解析XML文檔的標準接口,而SAX是社區(qū)討論的產(chǎn)物,是一種事實上的標準。
DOM和SAX只是定義了一些接口,以及某些接口的缺省實現(xiàn),而這個缺省實現(xiàn)只是用空方法來實現(xiàn)接口。一個應(yīng)用程序如果需要DOM或SAX來訪問XML文檔,還需要一個實現(xiàn)了DOM或SAX的解析器,也就是說這個解析器需要實現(xiàn)DOM或SAX中定義的接口。提供DOM或SAX中定義的功能。

 

解析原理

 
1 DOM解析原理
使用DOM要求解析器把整個XML文檔裝載到一個Document對象中。Document對象包含文檔元素,即根元素,根元素包含N多個子元素…
一個XML文檔解析后對應(yīng)一個Document對象,這說明使用DOM解析XML文檔方便使用,因為元素與元素之間還保存著結(jié)構(gòu)關(guān)系。
優(yōu)先:使用DOM,XML文檔的結(jié)構(gòu)在內(nèi)存中依然清晰。元素與元素之間的關(guān)系保留了下來!
缺點:如果XML文檔過大,那么把整個XML文檔裝載進內(nèi)存,可能會出現(xiàn)內(nèi)存溢出的現(xiàn)象!
 

2 設(shè)置Java最大內(nèi)存
運行Java程序,指定初始內(nèi)存大小,以及最大內(nèi)存大小。
java -Xms20m -Xmx100m MyClass
 
3 SAX解析原理
DOM會一行一行的讀取XML文檔,最終會把XML文檔所有數(shù)據(jù)存放到Document對象中。SAX也是一行一行的讀取XML文檔,但是當(dāng)XML文檔讀取結(jié)束后,SAX不會保存任何數(shù)據(jù),同時整個解析XML文檔的工作也就結(jié)束了。
但是,SAX在讀取一行XML文檔數(shù)據(jù)后,就會給感興趣的用戶一個通知!例如當(dāng)SAX讀取到一個元素的開始時,會通知用戶當(dāng)前解析到一個元素的開始標簽。而用戶可以在整個解析的過程中完成自己的業(yè)務(wù)邏輯,當(dāng)SAX解析結(jié)束,不會保存任何XML文檔的數(shù)據(jù)。
優(yōu)先:使用SAX,不會占用大量內(nèi)存來保存XML文檔數(shù)據(jù),效率也高。
缺點:當(dāng)解析到一個元素時,上一個元素的信息已經(jīng)丟棄,也就是說沒有保存元素與元素之間的結(jié)構(gòu)關(guān)系,這也大大限制了SAX的使用范圍。如果只是想查詢XML文檔中的數(shù)據(jù),那么使用SAX是最佳選擇!
 

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://metathetuscanyresort.com/javaee
0 分享到:
和我們在線交談!