Android 解析xml檔案的三種方式

2021-09-25 23:50:24 字數 3161 閱讀 4681

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

zhangsan

21lisi

22wangwu

222

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

第一種:dom解析

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檔案

對於config.xml 1.dom方式 public void getbydom catch saxexception ex catch ioexception ex catch parserconfigurationexception ex 2.pull方式 public void getbyp...

android中解析XML檔案

上面這個鏈結詳細介紹了幾種xml的解析方法以及原理。下面是實現思路 1.讀取xml檔案 2.獲取讀取事件,如果檔案結束,則停止解析 3.處理讀取事件 4.回到第二步。下面是實現過程 1.要解析的xml檔案內容 name jim age 123 gender male email mail hostn...

Android學習 XML檔案解析

主要內容 1 什麼是sax sax,全稱 api for xml,既是指一種介面,也是指乙個軟體包。作為介面,sax是事件驅動型xml解析的乙個標準介面。2 sax基本原理 sax的工作原理簡單的說就是對文件進行順序掃瞄,當掃瞄到文件的開始與結束 元素的開始與結束 文件結束等地方時通知事件處理函式,...