Android解析XML的三種方式

2021-07-27 01:16:16 字數 3750 閱讀 2436

在android中提供了三種解析xml的方式:dom(document objrect model),sax(****** api xml),以及android推薦的pull解析方式.

如圖:

<?xml version="1.0" encoding="utf-8"?>

zhangsan

21 lisi

22 wangwu

222

下面分別介紹三種解析方式。

dom解析器在解析xml文件時,會把文件中的所有元素,按照其出現的層次關係,解析成乙個個node物件(節點)。
node物件提供了一系列常量來代表結點的型別,當開發人員獲得某個node型別後,
就可以把node節點轉換成相應節點物件(node的子類物件),以便於呼叫其特有的方法。

node物件提供了相應的方法去獲得它的父結點或子結點。

程式設計人員通過這些方法就可以讀取整個xml文件的內容、或新增、修改、刪除xml文件的內容

.

缺點: 一次性的完全載入整個xml檔案,需要消耗大量的記憶體。

首先先獲取網路xml資料:

class mytask extends asynctask}} catch (malformedurlexception e)  catch (ioexception e) 

return null;

}

獲取資料成功,列印資訊如下:

02-16 12:43:14.602 18236-18298/com.pxd.par***ml i/test: <?xml version="1.0" encoding="utf-8"?>02-16 12:43:14.602 18236-18298/com.pxd.par***ml i/test: 02-16 12:43:14.603 18236-18298/com.pxd.par***ml i/test:   02-16 12:43:14.604 18236-18298/com.pxd.par***ml i/test: 	zhangsan

02-16 12:43:14.605 18236-18298/com.pxd.par***ml i/test: 21

02-16 12:43:14.606 18236-18298/com.pxd.par***ml i/test:

02-16 12:43:14.607 18236-18298/com.pxd.par***ml i/test: 02-16 12:43:14.608 18236-18298/com.pxd.par***ml i/test: lisi

02-16 12:43:14.609 18236-18298/com.pxd.par***ml i/test: 22

02-16 12:43:14.610 18236-18298/com.pxd.par***ml i/test:

02-16 12:43:14.611 18236-18298/com.pxd.par***ml i/test: 02-16 12:43:14.612 18236-18298/com.pxd.par***ml i/test: wangwu

02-16 12:43:14.613 18236-18298/com.pxd.par***ml i/test: 222

02-16 12:43:14.613 18236-18298/com.pxd.par***ml i/test:

02-16 12:43:14.615 18236-18298/com.pxd.par***ml i/test:

dom解析**如下:

class mytask extends asynctask

}} catch (malformedurlexception e) catch (ioexception e) catch (saxexception e) catch (parserconfigurationexception e)

return null;

}

這裡沒有寫展示頁面,直接列印資訊:

第二種sax解析:

sax是事件驅動型xml解析的乙個標準介面不會改變 sax的工作原理簡單地說就是對文件進行順序掃瞄,當掃瞄到文件(document)開始與結束、元素(element)開始與結束、文件(document)結束等地方時通知事件處理函式,由事件處理函式做相應動作,然後繼續同樣的掃瞄,直至文件結束。

sax解析**如下

class mytask extends asynctask

@override

public void enddocument() throws saxexception

@override

public void startelement(string uri, string localname, string qname, attributes attributes) throws saxexception

}@override

public void endelement(string uri, string localname, string qname) throws saxexception

@override

public void characters(char ch, int start, int length) throws saxexception else if("age".equals(cuurenttag))

}});

}} catch (malformedurlexception e) catch (ioexception e) catch (parserconfigurationexception e) catch (saxexception e)

return null;

}

效果圖:

第三種pull解析(類似sax)

**如下:

//非同步任務類asynctask

class mytask extends asynctask else if ("name".equals(starttgname)) else if ("age".equals(starttgname))

break;

case xmlpullparser.end_tag:

break;

}//細節:

type=xmlpullparser.next();}}

} catch (malformedurlexception e) catch (ioexception e) catch (xmlpullparserexception e)

return null;

}

列印資訊如下:

android 解析xml的三種方式

xml 可拓展的標記語言,簡單的資料儲存語言 開始標籤與結束標籤匹配 區分大小寫 標籤android 解析xml的三種方式 dom 文件物件模型 sax 事件驅動的xmlapi class 繼承org.xml.sax.helpers.defaulthandler包下的defaulthandler,重...

Android 三種XML檔案解析方法

xml檔案 代表資料 有結構描述 1 dom解析 public listloadpersons catch exception e return list sax解析 public listloadpersons override public void endelement string uri,...

Android 解析xml檔案的三種方式

zhangsan 21lisi 22wangwu 222 下面分別介紹三種解析方式。第一種 dom解析 dom解析器在解析xml文件時,會把文件中的所有元素,按照其出現的層次關係,解析成乙個個node物件 節點 node物件提供了一系列常量來代表結點的型別,當開發人員獲得某個node型別後,就可以把...