这里我们假设要解析的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. Clean Code(三):注释

    在工作中经常在刚开始写代码的时候,写下类与方法的注释,时间久了,CR多了,也不可能一直去修改注释了.加班都累成dog.注释才不改呢,就是这么任性,哈哈. 项目久了,注释会欺骗阅读者,本人被骗过,也骗过 ...

  2. (转)使用OpenVPN的一些注意事项

    原文地址:http://www.365mini.com/page/16.htm 本文介绍的只是OpenVPN连接或使用过程中的一些注意事项,如果你尚未下载安装OpenVPN,你可以点击查看OpenVP ...

  3. (转)十分钟搞定CSS选择器

    原文地址:http://www.cnblogs.com/dolphinX/p/3347713.html 在最近的web开发中是不是就会用到一些选择器,发现很多尤其是CSS3新增的不太熟悉,在此总结一下 ...

  4. ACM——简单排序

    简单选择排序 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:836            测试通过:259 描述 给定输入排序元素 ...

  5. _In_ 是什么意思

    函数参数类型前 _In_代表什么     在visual C++中属于SAL批注,是为了编译系统在分析代码时发现缺陷用的   表示是一个输入参数.可以定义一个_In_的宏,这个宏什么都不做, 就是形如 ...

  6. WebSocket使用教程 - 带完整实例

    http://my.oschina.net/u/1266171/blog/357488 什么是WebSocket?看过html5的同学都知道,WebSocket protocol 是HTML5一种新的 ...

  7. redis基本数据类型【2】-Hash类型

    一.概述 1.散列是一种典型的字典结构,filed和value的映射,但value只能存储字符串,不支持其他类型 2.一个散列类型最多包含 2^32 -1个字段 3.散列适合存储对象:使用对象和ID构 ...

  8. Mysql笔记【1】-数据库的基本操作(创建/删除)

    1.创建数据库 创建数据库(如果存在,则报错) #创建名称为test的数据库 create database test 查询创建完的数据库 show databases 2.删除数据库 删除数据库(如 ...

  9. Codevs 1689 建造高塔

    1689 建造高塔 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **钻石 Diamond** 题目描述 Description n有n种石块,石块能无限供应.每种石块都是长方体, ...

  10. 九度OJ 1468 Sharing -- 哈希

    题目地址:http://ac.jobdu.com/problem.php?pid=1468 题目描述: To store English words, one method is to use lin ...