Android中使用PULL方式解析XML文件深入介紹
更新時(shí)間:2012年12月05日 09:13:08 作者:
本文將詳細(xì)介紹Android如何使用PULL方式解析XML文件,在開發(fā)過(guò)程中會(huì)經(jīng)常使用到,有需要的朋友可以參考下
一、基本介紹
Android中極力推薦xmlpull方式解析xml。
xmlpull不僅可用在Android上同樣也適用于javase,但在javase環(huán)境中需自己獲取xmlpull所依賴的類庫(kù),kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。
jar包下載網(wǎng)址
http://www.xmlpull.org/
http://kxml.sourceforge.net/
二、例子
讀取到xml的聲明返回?cái)?shù)字0 START_DOCUMENT;
讀取到xml的結(jié)束返回?cái)?shù)字1 END_DOCUMENT ;
讀取到xml的開始標(biāo)簽返回?cái)?shù)字2 START_TAG
讀取到xml的結(jié)束標(biāo)簽返回?cái)?shù)字3 END_TAG
讀取到xml的文本返回?cái)?shù)字4 TEXT
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person id="001">
<name>XY1</name>
<age>22</age>
</person>
<person id="002">
<name>XY2</name>
<age>22</age>
</person>
</people>
public class PersonService
{
/**
* 從XML文件中讀取數(shù)據(jù)
*
* @param xml XML文件輸入流
*/
public List<Person> getPeople(InputStream xml) throws Exception
{
List<Person> lst = null;
Person person = null;
// 獲得pull解析器工廠
XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();
//獲取XmlPullParser的實(shí)例
XmlPullParser pullParser = pullParserFactory.newPullParser();
// 設(shè)置需要解析的XML數(shù)據(jù)
pullParser.setInput(xml, "UTF-8");
// 取得事件
int event = pullParser.getEventType();
// 若為解析到末尾
while (event != XmlPullParser.END_DOCUMENT) // 文檔結(jié)束
{
// 節(jié)點(diǎn)名稱
String nodeName = pullParser.getName();
switch (event)
{
case XmlPullParser.START_DOCUMENT: // 文檔開始
lst = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG: // 標(biāo)簽開始
if ("person".equals(nodeName))
{
String id = pullParser.getAttributeValue(0);
person = new Person();
person.setId(id);
}
if ("name".equals(nodeName))
{
String name = pullParser.nextText();
person.setName(name);
}
if ("age".equals(nodeName))
{
int age = Integer.valueOf(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG: // 標(biāo)簽結(jié)束
if ("person".equals(nodeName))
{
lst.add(person);
person = null;
}
break;
}
event = pullParser.next(); // 下一個(gè)標(biāo)簽
}
return lst;
}
}
Android中極力推薦xmlpull方式解析xml。
xmlpull不僅可用在Android上同樣也適用于javase,但在javase環(huán)境中需自己獲取xmlpull所依賴的類庫(kù),kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。
jar包下載網(wǎng)址
http://www.xmlpull.org/
http://kxml.sourceforge.net/
二、例子
讀取到xml的聲明返回?cái)?shù)字0 START_DOCUMENT;
讀取到xml的結(jié)束返回?cái)?shù)字1 END_DOCUMENT ;
讀取到xml的開始標(biāo)簽返回?cái)?shù)字2 START_TAG
讀取到xml的結(jié)束標(biāo)簽返回?cái)?shù)字3 END_TAG
讀取到xml的文本返回?cái)?shù)字4 TEXT
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person id="001">
<name>XY1</name>
<age>22</age>
</person>
<person id="002">
<name>XY2</name>
<age>22</age>
</person>
</people>
復(fù)制代碼 代碼如下:
public class PersonService
{
/**
* 從XML文件中讀取數(shù)據(jù)
*
* @param xml XML文件輸入流
*/
public List<Person> getPeople(InputStream xml) throws Exception
{
List<Person> lst = null;
Person person = null;
// 獲得pull解析器工廠
XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();
//獲取XmlPullParser的實(shí)例
XmlPullParser pullParser = pullParserFactory.newPullParser();
// 設(shè)置需要解析的XML數(shù)據(jù)
pullParser.setInput(xml, "UTF-8");
// 取得事件
int event = pullParser.getEventType();
// 若為解析到末尾
while (event != XmlPullParser.END_DOCUMENT) // 文檔結(jié)束
{
// 節(jié)點(diǎn)名稱
String nodeName = pullParser.getName();
switch (event)
{
case XmlPullParser.START_DOCUMENT: // 文檔開始
lst = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG: // 標(biāo)簽開始
if ("person".equals(nodeName))
{
String id = pullParser.getAttributeValue(0);
person = new Person();
person.setId(id);
}
if ("name".equals(nodeName))
{
String name = pullParser.nextText();
person.setName(name);
}
if ("age".equals(nodeName))
{
int age = Integer.valueOf(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG: // 標(biāo)簽結(jié)束
if ("person".equals(nodeName))
{
lst.add(person);
person = null;
}
break;
}
event = pullParser.next(); // 下一個(gè)標(biāo)簽
}
return lst;
}
}
您可能感興趣的文章:
- Android中使用sax解析xml文件的方法
- Android 解析XML 文件的四種方法總結(jié)
- Android 使用Pull方法解析XML文件的方法
- Android開發(fā)之XML文件解析的使用
- android編程之XML文件解析方法詳解(附源碼)
- Android中使用pull解析器操作xml文件的解決辦法
- Android使用Pull解析器解析xml文件的實(shí)現(xiàn)代碼
- android開發(fā)基礎(chǔ)教程—三種方式實(shí)現(xiàn)xml文件解析
- Android開發(fā)之DOM解析xml文件的方法
- Android中對(duì)xml文件解析的3種方式總結(jié)
相關(guān)文章
Android編程實(shí)現(xiàn)仿優(yōu)酷圓盤旋轉(zhuǎn)菜單效果的方法詳解【附demo源碼下載】
這篇文章主要介紹了Android編程實(shí)現(xiàn)仿優(yōu)酷圓盤旋轉(zhuǎn)菜單效果的方法,涉及Android界面布局及事件響應(yīng)相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-08-08
Kotlin遍歷集合導(dǎo)致并發(fā)修改異常的原因和解決方法
這篇文章主要介紹了Kotlin遍歷集合導(dǎo)致并發(fā)修改異常的原因和解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Android貝塞爾曲線實(shí)現(xiàn)消息拖拽消失
這篇文章主要為大家詳細(xì)介紹了Android貝塞爾曲線實(shí)現(xiàn)消息拖拽消失,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Android 仿今日頭條簡(jiǎn)單的刷新效果實(shí)例代碼
這篇文章主要介紹了Android 仿今日頭條簡(jiǎn)單的刷新效果實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
android 版本檢測(cè) Android程序的版本檢測(cè)與更新實(shí)現(xiàn)介紹
做個(gè)網(wǎng)站的安卓客戶端,用戶安裝到自己手機(jī)上,如果我出了新版本怎么辦呢?要有版本更新功能,感興趣的朋友可以了解下2013-01-01
Android Studio設(shè)置主題與字體大小圖文教程
這篇文章通過(guò)圖文詳細(xì)的給大家介紹了Android Studio中如何設(shè)置主題與字體大小,文章介紹的非常詳細(xì),相信對(duì)大家學(xué)習(xí)使用Android Studio具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2016-10-10
Android源碼學(xué)習(xí)之單例模式應(yīng)用及優(yōu)點(diǎn)介紹
動(dòng)態(tài)確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例這就是Android單例模式應(yīng)用,接下來(lái)詳細(xì)介紹,有需求的朋友可以參考下2013-01-01
Android生成隨機(jī)數(shù)的方法實(shí)例
這篇文章主要為大家詳細(xì)介紹了Android生成隨機(jī)數(shù)的方法實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03

