XML解析的兩種方式比較DOM與Sax

2021-10-08 22:26:34 字數 2088 閱讀 1222

xml檔案:

將整個xml資料轉換成乙個樹形物件[document物件]

將xml中的標籤,屬性,文字都作為乙個結點物件

在解析xml的時候,先將整個xml一次性讀入到記憶體中,

封裝成樹物件再進行操作

public

class

xmldemo}}}}}

dom方式解析的優點:由於所有的結點都在記憶體的document物件中,支援隨機訪問

dom方式解析的缺點:

由於所有的資料是一次性讀入到記憶體中的,對於比較大的xml資料,非常佔記憶體

順序解析,事件驅動

按順序一邊讀取資料,一邊進行解析,在讀取資料的時候會觸發一定的事件,每觸發一次,就可以做一次處理

public

class

saxpaserxml

}

建立存放資料的物件

public

class

student

public

void

setnum

(int num)

public string getname()

public

void

setname

(string name)

public

intgetage()

public

void

setage

(int age)

public

char

get***()

public

void

set***

(char ***)

@override

public string tostring()

';}}

建立事件處理器類:defaulthandler

/**

* sax的事件處理器,繼承defaulthandler

* 需要重寫defaulthandler的事件處理方法

* 事件處理器中的方法是通過事件觸發自動呼叫的

* */

public

class

myhander

extends

defaulthandler

//解析到開始標籤,需要處理標籤中的屬性

@override

public

void

startelement

(string uri, string localname, string qname, attributes attributes)

throws saxexception

}//解析到文字內容

@override

public

void

characters

(char

ch,int start,

int length)

throws saxexception

//解析到結束標籤

@override

public

void

endelement

(string uri, string localname, string qname)

throws saxexception

}//解析文件結束

@override

public

void

enddocument()

throws saxexception

}}

sax的優點:由於每次值需要存放觸發事件的位置,占用記憶體較少

sax的缺點:不支援隨機訪問

XML解析的兩種方式比較DOM與Sax

對於dom解析,首先是將整個xml文件讀到記憶體中,形成一顆倒狀的dom樹,如下圖 從上面的dom樹,我們應該很清楚dom的解析思想了 其實就是在我們的程式對xml進行操作之前,dom解析器就把整個文件讀取到記憶體中去了。知道了dom解析的思想後,我們對其方式進行的利弊進行一下分析 1 優點 a.能...

XML的兩種解析方法 DOM與SAX的比較分析

1 sax解析 sax apifor xml。基於事件驅動的解析方法,逐行解析資料。解析過程 開始標籤 取值 結束標籤 取值 為解決dom的問題,出現了sax。sax 事件驅動。當解析器發現元素開始 元素結束 文字 文件的開始或 結束等時,傳送事件,程式設計師編寫響應這些事件的 儲存資料。2 dom...

XML的兩種解析方式Dom和SAX的區別

dom和sax是應用中操縱xml文件的兩種主要api,它們分別解釋如下 dom,即document object model,中文叫文件物件模型。dom是w3c定義的標準文件物件模型,是乙個與作業系統和程式語言無關的 用於記憶體儲存和操作層次化文件的模型。當按照dom模型解析xml文件時,就會在記憶...