當前位置:成語大全網 - 書法字典 - 如何解析。android中帶有pullparse的xml文件?

如何解析。android中帶有pullparse的xml文件?

拉解析器的工作方式與SAX解析器類似。它提供類似的事件,如開始元素和結束元素事件。使用parser.next(),可以輸入下壹個元素並觸發相應的事件。與SAX不同,Pull解析器生成的事件是壹個數字,而不是壹個方法,因此您可以使用開關來處理感興趣的事件。當元素開始解析時,可以通過調用parser.nextText()方法來獲取Text類型的下壹個節點的值。

讓我們通過演示示例來介紹如何使用PULL機制解析XML文件。首先看看以下項目的目錄結構:

請遵循以下步驟:

【1】同時創建壹個名為student.xml的新xml文件,並將該XML文件放在assets目錄中。student.xml文件的內容如下:

【html】查看純文本

& lt?XML version =“1.0“encoding =“utf-8“?& gt

& lt學生& gt

& lt學生id =“20110806100“& gt;

& ltname & gt小明《/name & gt;

& lt年齡》22 & lt/age & gt;

& lt性& gt男性《/sex & gt;

& lt/student & gt;

& lt學生id =“20110806101“& gt;

& ltname & gt小李。

& lt年齡》24 & lt/age & gt;

& lt性& gt男性《/sex & gt;

& lt/student & gt;

& lt學生id =“20110806102“& gt;

& ltname & gt小李《/name & gt;

& lt年齡》21 & lt;/age & gt;

& lt性& gt女性《sex & gt

& lt/student & gt;

& lt/學生& gt

【2】根據XML文件中的節點目錄,創建相應的實體類來保存相應的解析信息。在包:com.andyidea.entity下創建壹個新的Student.java類

【html】查看純文本

包com . andyidea . entity;

公共課學生{

私有字符串id;

私有字符串名稱;

私人年齡;

私弦性愛;

公共字符串getId(){

返回id;

}

公共void集合id(字符串id ){

this.id = id

}

公共字符串getName(){

返回名稱;

}

公共void集合名稱(字符串名稱){

this.name = name

}

public int getAge(){

回歸年齡;

}

公共void存儲(int age ){

this.age =年齡;

}

公共字符串getSex(){

返性;

}

public void setSex(String sex ){

this.sex = sex

}

}

【3】定義壹個使用PULL解析XML文件的工具類:ParserByPULL.java。

【html】查看純文本

包com . andyidea . util;

導入Java . io . inputstream;

導入Java . util . ArrayList;

導入Java . util . list;

導入org.xmlpull.v1。XmlPullParser

導入org.xmlpull.v1。XmlPullParserFactory

導入Android . util . XML;

導入com . andyidea . entity . student;

公共類ParserByPULL {

//使用XmlPullParser分析XML文件。

公共靜態列表& lt學生& gtget students(InputStream inStream)拋出Throwable

{

列表& lt學生& gt學生= null

Student mStudent = null

//= = = = = =創建XmlPullParser有兩種方法= = = = = =

//方法1:使用工廠類XmlPullParserFactory。

XmlPullParserFactory pull factory = XmlPullParserFactory . new instance();

XmlPullParser parser = pull factory . newpullparser();

//方法二:使用android提供的實用程序類android.util.Xml。

//XML pull parser parser = XML . newpullparser();

//解析文件輸入流

parser . set input(inStream,“UTF-8”);

//生成第壹個事件

int event type = parser . get event type();

//只要不是文檔結束事件,它就會壹直循環。

while(event type!=XmlPullParser。END_DOCUMENT)

{

開關(事件類型)

{

//觸發開始文檔事件

case XmlPullParser。開始_文檔:

students =新數組列表& lt學生& gt();

打破;

//觸發開始元素事件

case XmlPullParser。開始標記:

//獲取分析器當前指向的元素的名稱。

string name = parser . getname();

如果(“學生”。等於(名稱))

{

//通過解析器獲取id的元素值,並設置學生的id。

mStudent = new Student();

mstudent . setid(parser . get attribute value(0));

}

if(m student!=null)

{

if(“名稱”。等於(名稱))

{

//獲取分析器當前指向的元素的下壹個文本節點的值。

mstudent . setname(parser . next text());

}

如果(“年齡”。等於(名稱))

{

//獲取分析器當前指向的元素的下壹個文本節點的值。

mstudent . setage(new Short(parser . nexttext()));

}

如果(“性”。等於(名稱))

{

//獲取分析器當前指向的元素的下壹個文本節點的值。

mstudent . setsex(parser . next text());

}

}

打破;

//觸發結束元素事件

case XmlPullParser。結束標記:

//

如果(“學生”。等於(parser.getName()))

{

students . add(m student);

mStudent = null

}

打破;

默認值:

打破;

}

event type = parser . next();

}

返校學生;

}