这里我们假设要解析的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. IT牛人博客

    IT牛人博客,参见:http://blog.csdn.net/freebird_lb/article/details/8210276 团队技术博客 淘宝UED淘宝用户体验团队 淘宝核心系统淘宝核心系统 ...

  2. Android 使用定时器在指定日期及时间执行任务

    public class MainActivity extends Activity { private Handler handler = new Handler(){ @Override publ ...

  3. H5 canvas 小demo之小球的随机运动

    1:结构之html----balls.html <!DOCTYPE html> <html> <head lang="en"> <meta ...

  4. Css3动画库收集

    1.animate.css – 齐全的CSS3动画库 http://www.dowebok.com/98.html 2.Angular官方动画库 http://augus.github.io/ngAn ...

  5. ios paper for facebook 使用第三方库

    facebook paper使用的第三方库 Facebook Paper使用的第三方库 第三方库名 简介 链接 ACE code editor https://github.com/ajaxorg/a ...

  6. Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)

    3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...

  7. (转) oc static extern 和const

    static 全局的,可以改的,如果在一个类中声明static,类中其他地方用到的时候,也是使用的改变量.和java类似,但不能用类名直接访问. const 是常量,不可以改的 extern 1.假如 ...

  8. 【ADO.NET】1、简单配置与使用

    1.一些基础的知识点 ExecuteReader(); //返回查询到的数据,一次一行,用于 selectExecuteNonQuery(); //返回影响的行数,用于 delete,insert,u ...

  9. ASP.Net大文件上传组件详解

    首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Best ...

  10. 关于学习HTML5中自己犯的错误

    7.1写错了 siblings()这个函数写成了sibling,在jQuery中并没有这个函数的定义 在查找错误的过程中,自己也发现了一个学习jQuery的网站http://www.365mini.c ...