欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中使用PULL方式解析XML文件深入介绍

程序员文章站 2023-12-15 11:24:10
一、基本介绍 android中极力推荐xmlpull方式解析xml。 xmlpull不仅可用在android上同样也适用于javase,但在javase环境中需自己获取xm...
一、基本介绍
android中极力推荐xmlpull方式解析xml。
xmlpull不仅可用在android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。
jar包下载网址
http://www.xmlpull.org/
http://kxml.sourceforge.net/
二、例子
读取到xml的声明返回数字0 start_document;
读取到xml的结束返回数字1 end_document ;
读取到xml的开始标签返回数字2 start_tag
读取到xml的结束标签返回数字3 end_tag
读取到xml的文本返回数字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文件中读取数据
*
* @param xml xml文件输入流
*/
public list<person> getpeople(inputstream xml) throws exception
{
list<person> lst = null;
person person = null;
// 获得pull解析器工厂
xmlpullparserfactory pullparserfactory = xmlpullparserfactory.newinstance();
//获取xmlpullparser的实例
xmlpullparser pullparser = pullparserfactory.newpullparser();
// 设置需要解析的xml数据
pullparser.setinput(xml, "utf-8");
// 取得事件
int event = pullparser.geteventtype();
// 若为解析到末尾
while (event != xmlpullparser.end_document) // 文档结束
{
// 节点名称
string nodename = pullparser.getname();
switch (event)
{
case xmlpullparser.start_document: // 文档开始
lst = new arraylist<person>();
break;
case xmlpullparser.start_tag: // 标签开始
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: // 标签结束
if ("person".equals(nodename))
{
lst.add(person);
person = null;
}
break;
}
event = pullparser.next(); // 下一个标签
}
return lst;
}
}

上一篇:

下一篇: