您的位置:首页 > 移动开发 > Android开发

Android中使用pull解析xml文件

2015-12-10 14:53 423 查看
Android中解析Xml文件大致有三种,这里我着重介绍使用pull的方式解析xml文件。

首先我们需要了解xml文件的格式,以下是一个最简单的示例

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

<books>

<book>

<name>围城</name>

<author>钱钟书</author>

</book>

<book>

<name>平凡的世界</name>

<author>路遥</author>

</book>

<book>

<name>穆斯林的葬礼</name>

<author>霍达</author>

</book>

</books>

以上是一个封装这书籍信息的简单的xml文件,我将以这个文件为例来通过pull方法解析改xml文件

pull的解析方法主要用到两个类,分别是XmlPullParserFactory和XmlPullParser,其中XmlPullParserFactory相当于工厂类来产生XmlPullParser对象,而XmlPullParser对象主要用来解析。

以下是解析过程,前提是我们已经有了book的实体类。

private void parseXml() {

Book book=null;

try {

InputStream inputStream=getResources().getAssets().open("books.xml");

//得到一个XmlPullParserFactory对象

XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();

//得到XmlPullParser对象

XmlPullParser pullParser=pullParserFactory.newPullParser();

pullParser.setInput(inputStream, "UTF-8");

int event=pullParser.getEventType();

//假如没有到文档的末尾,则继续循环

while(event!=XmlPullParser.END_DOCUMENT){

String nodeName=pullParser.getName();

switch(event){

case XmlPullParser.START_DOCUMENT:

//文档的开始处

//一帮在文档的最开头处需要构建容纳解析到的对象的容器

books=new ArrayList<Book>();

break;

case XmlPullParser.START_TAG:

if("book".equals(nodeName)){

//在book标签的开始出需要构建对象

book=new Book();

}

if("name".equals(nodeName)){

book.setBookName(pullParser.nextText());

}

if("author".equals(nodeName)){

book.setBookAuthor(pullParser.nextText());

}

break;

case XmlPullParser.END_TAG:

if("book".equals(nodeName)){

//将封装好的对象放到集合中

books.add(book);

}

break;

}

event=pullParser.next();

}

} catch (Exception e) {

e.printStackTrace();

}

}

pull解析过程实际上是遍历文档的形式,通过parse.next()来获得下一个解析事件,同时可以通过parse.nextText()来获取标签之间的文本值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: