分享好友 移动开发首页 频道列表

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

Android开发  2015-09-07 10:150
一、基本介绍
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;
}
}

查看更多关于【Android开发】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Android 中处理 XML 的四种方式-XPath
适用场景:只取 XML中的部分节点值非常方便,我很喜欢 XPath,关于 XPath语法请参考SelectNodes 与 XPath,这是 C#中的,但是 XPath语法是通用的。import org.xml.sax.InputSource;import java.io.ByteArrayInputStream;import java.io.IOException;import ja

0评论2016-11-23332

Android 中处理 XML 的四种方式-PULL
PULL和 SAX很相像,都是在节点中走,然后遇到开始节点了、结束节点会触发事件,此时就可以获取值。import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import java.io.ByteArrayInputStream;import java.io.IOException;impo

0评论2016-11-23172

Android 中处理 XML 的四种方式-SAX
SAX(Simple API for XML)解析速度快,占用内存少。适用为 SAX的场景:映射为对象很方便。流程SAX通过一个 Handler将 XML“映射”到一个对象。XML - Handler - ObjectXML示例?xml version=1.0?rootsiteName千一网络/siteNamesiteUrlhttp://www.cftea.com//si

0评论2016-11-23182

Android 中处理 XML 的四种方式-DOM
Android 中处理 XML 的几种方式连载中,我们就不介绍合成 XML了,因为合成 XML可以直接拼接字符串,虽然看起很不高大上,但却很有效。我们主要介绍如何取 XML中的值。适用 DOM的场景:只取 XML中的部分节点值方便,但还不如 XPath方便。DOM解析小 XML很快,大

0评论2016-11-2398

使用FileProvider
像这样的代码:privatevoidinstall(File apkFile){ Uri uri = Uri.fromFile(apkFile); Intent intent = newIntent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-arch

0评论2016-11-10224

LayoutInflater踩坑日记
Android开发中ayoutInflater还是比较常见的,例如在Adapter或是Fragment中加载Layout布局,拿Adapter来说,在onCreateViewHolder中加载布局然后传给自定义的ViewHolder,通常我们都是这么用的:@Override public CustomViewHolder onCreateViewHolder(ViewGro

0评论2016-10-10123

Android - 自定义View冷知识之动态替换layout.xml中的View
在开发迭代中,有这么一个场景:我们给TextView定制了不少功能,在下一个版本,需要把程序中的所有TextView都替换成我自己的CustomTextView,这个时候你会怎么做?有没有一种方法在不改动布局文件的情况下就能实现动态替换呢?原理:layout.xml - Java 对象首

0评论2016-10-10531

在xml中“直接”使用px的小技巧和工具
注:这个idea出自知乎某个回答,但是来源找不到了。。。工具是自己写的。在项目开发中,UI给过来的设计图上的尺寸标识,一般以px(像素)为单位。Android工程师需根据设计图的尺寸将px换成dp,填到layout.xml中。有了这个工具,可以很方便地实现这一点。首先

0评论2016-09-09134

android编程之XML文件解析方法详解(附源码)
这篇文章主要介绍了android编程之XML文件解析方法,结合实例形式较为详细的分析了Android解析XML文件的sax、pull及Dom三种方法,具有一定参考借鉴价值,需要的朋友可以参考下

0评论2015-11-18110

Android发送xml数据给服务器的方法
这篇文章主要介绍了Android发送xml数据给服务器的方法,以实例形式较为详细的分析了Android发送XML数据及接收XML数据的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

0评论2015-11-08131

Android中常用的XML生成方法实例分析
这篇文章主要介绍了Android中常用的XML生成方法,以实例形式较为详细的分析了Android生成XML的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

0评论2015-11-0870

AndroidManifest.xml配置文件解析
AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文将详细介绍,需要了解的朋友可以参考下

0评论2015-09-0552

android开发基础教程—三种方式实现xml文件解析
本文将介绍三种方式:sax方式/dom方式/pull方式实现xml文件解析,感兴趣的朋友可以了解下

0评论2015-09-03142

Android开发之图形图像与动画(三)Animation效果的XML实现
使用XML来定义Tween Animation动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,感兴趣的友可以了解一下,希望本文对你有所帮助

0评论2015-08-2971

Android使用Pull解析器解析xml文件的实现代码
Android使用Pull解析器解析xml文件的实现代码,需要的朋友可以参考一下

0评论2015-08-2948

更多推荐