兩種解析XML文件的方法 DOM和SAX

2021-06-01 12:49:49 字數 3760 閱讀 4525

兩種解析xml文件的方法---dom和sax

dom方式解析xml檔案

doc解析程式設計:

查詢某乙個節點

// 查詢固定值的書的元素的第二個子節點

public static voidfindfixedchildren(document doc)

//查詢書架中的子元素的第二個元素

intindex = 2;

//獲取集合中的長度並判斷,如果長度》2,說明有要找的那個元素,然後找出並輸出

if(list.getlength() >= 2)

刪除結點

// 刪除節點

public static voiddeleteelement(document doc)throwsexception

注意:將記憶體中樹狀結構doc'寫入到xml文件中,在其中,當呼叫transform方法時,有兩個引數,分別為 source和resutl,但這兩個數是介面,但必須在用的時候,要用實現了該介面的類才可以,所以用到了domsource 和streamresult兩個方法

transforme***ctory factory = transforme***ctory.newinstance()

transformer trans = factory.newtransformer();

trans.transform(newdomsource(doc),newstreamresult(newfile(

"src/book.xml")));

新增節點

// 節點的新增

public static voidcreateelement(document doc)throwsexception

插入節點

public static voidcreatefileelement(document doc)throwsexception

修改節點

public static voidupdateelement(document doc)throwsexception

// 將記憶體中樹狀結構doc'寫入到xml文件中

transforme***ctory factory = transforme***ctory.newinstance();

// 由工廠物件生成裝換物件transformer

transformer trans = factory.newtransformer();

// 通過trans實現doc轉換到xml文件,用的此方法中的引數是(source,result),必須用此方法的實現了改介面的類才可以用,domsource實現了suorce

// 需要乙個domsource物件來代表源樹

trans.transform(newdomsource(doc),newstreamresult(newfile(

"src/book.xml")));

}node方法的總結:

(1)node.getnodetype()   得到的是節點的型別     元素節點型別是1   文字節點為 3

(2)node.getnodevalue()     元素的值為空  因為節點是element,所有返回的是null

(3)得到元素中的內容的方法:

node.gettextcontent()  

text  text =  (text)node.getchildnoddes().item(0)     text.getnodevalues()  

sam解析xml文件

(1)sam解析的優點:

sax解析允許在讀取文件的時候,即對文件進行處理,而不必等到整個文件裝載完才會文件進行操作。

(2)sam解析的分析:

sax採用事件處理的方式解析xml檔案,利用 sax 解析 xml 文件,涉及兩個部分:解析器和事件處理器:

•         解析器可以使用jaxp的api建立,建立出sax解析器後,就可以指定解析器去解析某個xml文件。

•         解析器採用sax方式在解析某個xml文件時,它只要解析到xml文件的乙個組成部分,都會去呼叫事件處理器的乙個方法,解析器在呼叫事件處理器的方法時,會把當前解析到的xml檔案內容作為方法的引數傳遞給事件處理器。

•         事件處理器由程式設計師編寫,程式設計師通過事件處理器中方法的引數,就可以很輕鬆地得到sax解析器解析到的資料,從而可以決定如何對資料進行處理。

(3)sam解析的步驟:

//獲取sax解析器工廠類的物件

saxparse***ctory factory = saxparse***ctory.newinstance();

//獲取sax解析器

saxparser sax = factory.newsaxparser();

//通過解析器解析xml文件

//bookhandler事件處理器

sax.parse(newfile("src/book.xml"),newbookhandler());

bookhandler是事件處理器,要想呼叫必須要重寫defaulthandler中的方法來實現功能,

classbookhandlerextendsdefaulthandler

//flag = false;

}@override

//文件結束時呼叫的方法

public voidenddocument()throwssaxexception

@override

//結束時呼叫的元素

public voidendelement(string uri, string locaname, string qname)

throwssaxexception

}@override

public voidstartdocument()throwssaxexception

@override

public voidstartelement(string uri, string locaname, string qname,

attributes attributes)throwssaxexception }}

·

兩種解析XML文件的方法 DOM和SAX

兩種解析xml文件的方法 dom和sax dom方式解析xml檔案 doc解析程式設計 查詢某乙個節點 查詢固定值的書的元素的第二個子節點 public static voidfindfixedchildren document doc 查詢書架中的子元素的第二個元素 intindex 2 獲取集合...

兩種XML解析方法

xml解析 概念 xml extended markup language,可擴充套件的標記性語言 可擴充套件 標籤 可以自己定義。張三30 李四40 html 超文字標記語言 文件中 標記 標籤 固定 pull 基於事件拉取的形式 事件 常量值 開始標籤 相應的動作 比如建立集合,物件。標籤和標籤...

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

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