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

Android中使用Pull解析器解析XML文件简介

2013-12-27 00:20 393 查看
Android中解析XML时可以使用其内置的XML解析器,和SAX基本类似,也是事件驱动类型,但不同的是Pull解析事件返回的是数值型,而非方法。其使用简介如下:

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Xml;
/**
* 使用Pull解析器解析XML文件
*/
public class XmlPullService
{
// 保存解析数据
private static List<Person> persons;

public static List<Person> getPersons(InputStream inStream) throws XmlPullParserException, IOException
{
// 获得Pull解析器对象
XmlPullParser parser = Xml.newPullParser();
// 设置Pull解析的数据和方式
parser.setInput(inStream, "UTF-8");

int type = parser.getEventType();
Person person = null;

while(type != XmlPullParser.END_DOCUMENT)
{
switch (type)
{
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;

case XmlPullParser.START_TAG:
person = new Person();
if ("person".equals(parser.getName()))
{
Integer id = Integer.parseInt(parser.getAttributeValue(null, "id"));
person.setId(id);
}
// parser.nextText()可以获取下一个Text类型的节点值
else if ("name".equals(parser.getName())) {
String name = parser.nextText();
person.setName(name);
}
else if ("age".equals(parser.getName()))
{
int age = Integer.parseInt(parser.nextText());
person.setAge(age);
}
break;

case XmlPullParser.END_TAG:
if ("person".equals(parser.getName()))
{
persons.add(person);
person = null;
}
break;

default:
break;
}
// 进入下一个元素,并触发相应的事件
type = parser.next();
}
inStream.close();
return persons;
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: