这里我们假设要解析的xml文件名为:test.xml,我们将其放在assets路径中。

xml文件内容为:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<books>
<book id="1">
<name>Java编程思想</name>
<price>29.9</price>
<date>2013年11月11日</date>
</book>
<book id="2">
<name>PHP和MySQL WEB开发</name>
<price>49.9</price>
<date>2009年10月01日</date>
</book>
<book id="3">
<name>鸟哥的Linux私房菜</name>
<price>60.0</price>
<date>2010年05月30日</date>
</book>
</books>

下面的代码演示了如何去解析一个xml文件(注意assets文件流的获取方式)

  private void pullXml() {
InputStream inputStream = null;
List<Book> bookList = null;
Book book = null;
try {
//初始化parser
AssetManager assetManager=this.getAssets();
inputStream = assetManager.open("test.xml");
XmlPullParser parser = Xml.newPullParser();
parser.setInput(inputStream, "utf-8"); //开始读取数据
int type = parser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {//
switch (type) {
case (XmlPullParser.START_TAG)://
if ("books".equals(parser.getName())) {
bookList = new ArrayList<Book>();
} else if ("book".equals(parser.getName())) {
book = new Book();
//获取book的id
String id = parser.getAttributeValue(0);
book.setId(Integer.parseInt(id));
} else if ("name".equals(parser.getName())) {
book.setName(parser.nextText());
} else if ("price".equals(parser.getName())) {
book.setPrice(Double.parseDouble(parser.nextText()));
} else if ("date".equals(parser.getName())) {
book.setDate(parser.nextText());
}
break;
          
case (XmlPullParser.END_TAG)://
if ("book".equals(parser.getName())) {
bookList.add(book);
book = null;
}
break;
}
type = parser.next();
}
} catch (Exception e) {
Toast.makeText(this, "解析出错", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
Toast.makeText(this, "长度"+bookList.size(), Toast.LENGTH_LONG).show(); for (Book book1 : bookList) {
Log.d("book", book1.toString());
}
}

Android 使用XmlPullParser解析xml的更多相关文章

  1. Android使用pull解析xml格式的数据

    dom解析:基于全文加载的解析方式   sax解析:基于事件的逐行解析方式  pull解析:同sax              XmlPullParser     //解析xml文件读取短信内容    ...

  2. Android开发学习---使用XmlPullParser解析xml文件

    Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...

  3. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  4. Android中用PULL解析XML

    解析XML的方式有DOM,SAX,PULL,那为什么要在Android中使用PULL解析呢?首先来说一下PULL解析的优点,然后再说一下其他两种解析方式的缺点,答案就清晰可见啦. DOM不适合文档较大 ...

  5. Android使用pull解析xml

    一.理论准备     Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, ...

  6. android——使用pull解析xml文件

    1.persons.xml 将persons.xml文件放到src目录下.其代码如下: <?xml version='1.0' encoding='UTF-8' standalone='yes' ...

  7. [android] 采用pull解析xml文件

    /***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...

  8. Android几种解析XML方式的比较

    https://blog.csdn.net/isee361820238/article/details/52371342 一.使用SAX解析XML SAX(Simple API for XML) 使用 ...

  9. Android中pull解析XML文件的简单使用

    首先,android中解析XML文件有三种方式,dom,sax,pull 这里先讲pull,稍候会说SAX和DOM pull是一种事件驱动的xml解析方式,不需要解析整个文档,返回的值是数值型,是推荐 ...

随机推荐

  1. Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project '项目名'

    问题描述: Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project 'myf'. ...

  2. Python之路【第二十四篇】:Python学习路径及练手项目合集

      Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...

  3. 第九篇:web之前端之web上传文件的方式

    前端之web上传文件的方式   前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构 ...

  4. CDOJ-10(栈的应用)

    In Galgame We Trust Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Othe ...

  5. 검색엔진의 크롤링과 인덱싱의 차이 (robots.txt 파일과 meta robots 태그의 차이점)

    검색엔진의 크롤링과 인덱싱의 차이크롤링 제어는 robots.txt인덱싱 제어는 < meta name="robots" content="noindex& ...

  6. ACM——回文

    回文回文! 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:967            测试通过:338 描述 回文是一种有趣的现 ...

  7. js 函数命名

    1 函数命名可以使用匿名: var f=function(x){return x*2;} 2 可以使用变量: function double(x){return x*2;} 二者区别:后者会绑定到与其 ...

  8. OC - 9.使用Quartz2D绘制下载进度条

    效果图 实现思路 要实现绘图,通常需要自定义一个UIView的子类,重写父类的- (void)drawRect:(CGRect)rect方法,在该方法中实现绘图操作 若想显示下载进度,只需要实例化自定 ...

  9. 一些简单的帮助类(2)-- JavaSctipt Array Linq

    在日程工作中经常会遇到这样的问题 一个JS数组 我们要找出其中 一些符合要求的类容 又或者对数组里的类容求和求平均数之类的一般的做法是循环里面的类容做判断添加到一个新的集合里 var array = ...

  10. bzoj2732: [HNOI2012]射箭 半平面交

    这题乍一看与半平面交并没有什么卵联系,然而每个靶子都可以转化为两个半平面. scanf("%lf%lf%lf",&x,&ymin,&ymax); 于是乎就有 ...