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

全國(guó)咨詢/投訴熱線:400-618-4000

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

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

操作XML文檔概述

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

 

解析原理

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

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

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