兩種XML解析方法

2021-07-23 21:17:06 字數 2624 閱讀 6687

xml解析;

概念:xml(extended markup language,可擴充套件的標記性語言)

可擴充套件:標籤:可以自己定義。

張三30

李四40

html:超文字標記語言

文件中:

標記:標籤(固定)

.....

pull:

基於事件拉取的形式:

事件-->常量值

...開始標籤

相應的動作:比如建立集合,物件。。。

標籤和標籤之間的內容:文字標籤

....結束標籤

開始文件:

結束文件:

pull解析:先建立乙個掃瞄器(解析器物件),掃瞄整個xml文件。遇到對應的事件,返回乙個常量數值。

5個事件:

開始文件事件:0

結束文件事件:1

開始標籤事件:2

結束標籤事件:3

文字標籤事件:4

獲取事件的型別--->進行相應的操作

首次:geteventtype()

其他:next()

獲取文字內容:nexttext()

a.獲取當前掃瞄器後的文字內容。

b.同時跳過該結束標籤。

操作步驟:

step1:要解析的檔案:file/server

setp2:通過工廠模式,獲取解析器物件

xmlpullparser parser = xmlpullparse***ctory.newinstance().newpullparser();

step3:設定掃瞄器要掃瞄的檔案

parser.setinput(inputstream,"utf-8");

step4:解析

a:獲取首次的事件型別:start_document:0

b:while(事件型別不是結束文件)

pull:基於事件常量的形式解析。(事件對應了乙個常量的數值)

開始解析文件事件:0

結束解析文件事件:1-->結束迴圈

開始解析標籤事件:2-->標籤名:建立集合,建立物件,獲取數值。。

結束解析標籤事件:3-->將物件存入集合

文字標籤事件:4

sax:

****** api for xml

基於事件通知的形式解析。(事件對應了方法)

開始解析文件事件:startdocument()

結束解析文件事件:enddocument()

開始解析標籤事件:startelement()

結束解析文件事件:endelement()

文字標籤事件:characters()

parser:file,myhandler

startdocument-->new list

startelement-->開始標籤

a:將qname的值放大作用域:tagname

b:qname:person--->new person

endelement-->結束標籤

a:qname:person-->list.add(p)

characters()-->文字標籤

string content  = new string(ch,start,length);

a:tagname:name-->setname

b:tagname:age-->setage

tagname,qname-->persons

content:空白

tagname,qname-->person

content:空白

tagname,qname-->name

content:張老師

content:空白

tagname,qname->age

content:21-->賦值

content:空白

sax解析:

step1:獲取解析器物件:saxparser parser = saxparse***ctory.newinstance().newsaxparser();

step2:parser.parse(file/inputstream,defaulthander);

step3:建立myhandler類,繼承defaulthandler,為了重寫5個方法。

step4:

startdocument()-->建立了集合

startelement()-->

a:將qname-->tagname

b:根據qname的值:person,建立物件

endelement()-->

a:將tagname的值,清空

b:根據qname的值:person,將物件存入集合

characters()-->content

a:判斷tagname:name,age。。

pull,sax解析的異同點

相同點:

1.基於事件

5個事件:

2.底層原理都是io流

不同點:

pull:事件拉取,基於常量

5個事件-->5個數值

sax:自動獲取下次,基於通知(自動執行方法)

5個事件-->5個方法

pull:手動拉去(next()),可以通過**操作,結束迴圈,進而結束解析。

sax:自動執行。無法停止(吃了炫邁)

常見的XML的兩種解析方法

xml優點 平台無關性,語言無關性,系統無關性 xml在不同的語言裡解析方式都是一樣的,只不過實現的語法不同而已。基本的解析方式有兩種,一種叫sax,另一種叫dom。sax是基於事件流的解析,dom是基於xml文件樹結構的解析.假設我們xml的內容和結構如下 下面是解析xml常用的dom和 方法 1...

XML解析的兩種方式區別

xml解析的兩種方式區別 1.dom解析 需要xml完全載入進記憶體才可以操作 可以方便進行增刪改查操作,耗費記憶體 2.sax解析 逐漸掃瞄xml檔案,當遇到標籤時觸發解析處理器,不需要載入進記憶體 只能讀取,無法進行增刪改查 dom解析 具體解析步驟如下 documentbuilde ctory...

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

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