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

xml文件内容为:

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

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

  1. private void pullXml() {
  2. InputStream inputStream = null;
  3. List<Book> bookList = null;
  4. Book book = null;
  5. try {
  6. //初始化parser
  7. AssetManager assetManager=this.getAssets();
  8. inputStream = assetManager.open("test.xml");
  9. XmlPullParser parser = Xml.newPullParser();
  10. parser.setInput(inputStream, "utf-8");
  11.  
  12. //开始读取数据
  13. int type = parser.getEventType();
  14. while (type != XmlPullParser.END_DOCUMENT) {//
  15. switch (type) {
  16. case (XmlPullParser.START_TAG)://
  17. if ("books".equals(parser.getName())) {
  18. bookList = new ArrayList<Book>();
  19. } else if ("book".equals(parser.getName())) {
  20. book = new Book();
  21. //获取book的id
  22. String id = parser.getAttributeValue(0);
  23. book.setId(Integer.parseInt(id));
  24. } else if ("name".equals(parser.getName())) {
  25. book.setName(parser.nextText());
  26. } else if ("price".equals(parser.getName())) {
  27. book.setPrice(Double.parseDouble(parser.nextText()));
  28. } else if ("date".equals(parser.getName())) {
  29. book.setDate(parser.nextText());
  30. }
  31. break;
  32.           
  33. case (XmlPullParser.END_TAG)://
  34. if ("book".equals(parser.getName())) {
  35. bookList.add(book);
  36. book = null;
  37. }
  38. break;
  39. }
  40. type = parser.next();
  41. }
  42. } catch (Exception e) {
  43. Toast.makeText(this, "解析出错", Toast.LENGTH_LONG).show();
  44. e.printStackTrace();
  45. }
  46. Toast.makeText(this, "长度"+bookList.size(), Toast.LENGTH_LONG).show();
  47.  
  48. for (Book book1 : bookList) {
  49. Log.d("book", book1.toString());
  50. }
  51. }

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. 远程之SSH

    SSH(Secure Shell的缩写),由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远 ...

  2. fedora 23 安装genymotion解决方案

    由于学习android开发,都说genymotion模拟器给力,我就尝试了下,安装过程参考 :但出现这种错误:缺少库 libjpeg.so.8 ,我就各种goole和百度找到库(链接地址),解压之后放 ...

  3. volatile--共享数据必须保证可见性

    在Effective Java中看到的,试了一下,有点意思,考查的知识点是volatile关键字. 下面这段代码,预期是打印it takes xxxx miliseconds. .但实际上,陷入了死循 ...

  4. Windows 7中,用Visual Studio开发WPF应用程序,实现从Windows Explorer中拖拽文件到应用程序,始终显示“无法拖放”符号问题解决方案

    Are you running your application or Visual Studio that hosts the app under administrative privilege? ...

  5. iOS支付宝集成步骤;王刚韧的技术博客

  6. 10.13_extjs,combox,效率为什么这么低

    (1)今天很累!经过三天的奋斗,终于完成了完全最优界面的快捷选址功能.今天是最后一天,最紧张,也最累. 为何我的效率不高呢?!我的时间都花费到哪儿呢?①阅读代码理解过去的逻辑:②关键技术上的再复习再巩 ...

  7. HDU 5351 MZL's Border (规律,大数)

    [HDU 5351 MZL's Border]题意 定义字符串$f_1=b,f_2=a,f_i=f_{i-1}f_{i-2}$. 对$f_n$的长度为$m$的前缀$s$, 求最大的$k$满足$s[1] ...

  8. 【POJ2094】【差分序列】Angry Teacher

    Description Mr. O'Cruel is teaching Math to ninth grade students. Students of course are very lazy, ...

  9. (转)IOS开发之——绘图(CGContext)

    周刊 更多 登录   IOS开发之——绘图(CGContext) 时间 2014-04-21 09:17:43 CSDN博客 原文  http://blog.csdn.net/zhenyu521131 ...

  10. centOS 6.4 vsftpd 500 illegal port command

    原先配置好的vsftpd突然不行了,不知为啥,感觉跟网络有关,这个网络总是有dns拦截的现象,..小公司.真烦人,用联通线路就没问题, 但同事就是连不上,我的笔记本却可以连接上..我的ubuntn,同 ...