在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: zhangsan02-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型別後,就可以把...