Android 使用XmlPullParser解析xml
这里我们假设要解析的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的更多相关文章
- Android使用pull解析xml格式的数据
dom解析:基于全文加载的解析方式 sax解析:基于事件的逐行解析方式 pull解析:同sax XmlPullParser //解析xml文件读取短信内容 ...
- Android开发学习---使用XmlPullParser解析xml文件
Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- Android中用PULL解析XML
解析XML的方式有DOM,SAX,PULL,那为什么要在Android中使用PULL解析呢?首先来说一下PULL解析的优点,然后再说一下其他两种解析方式的缺点,答案就清晰可见啦. DOM不适合文档较大 ...
- Android使用pull解析xml
一.理论准备 Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, ...
- android——使用pull解析xml文件
1.persons.xml 将persons.xml文件放到src目录下.其代码如下: <?xml version='1.0' encoding='UTF-8' standalone='yes' ...
- [android] 采用pull解析xml文件
/***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...
- Android几种解析XML方式的比较
https://blog.csdn.net/isee361820238/article/details/52371342 一.使用SAX解析XML SAX(Simple API for XML) 使用 ...
- Android中pull解析XML文件的简单使用
首先,android中解析XML文件有三种方式,dom,sax,pull 这里先讲pull,稍候会说SAX和DOM pull是一种事件驱动的xml解析方式,不需要解析整个文档,返回的值是数值型,是推荐 ...
随机推荐
- 远程之SSH
SSH(Secure Shell的缩写),由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远 ...
- fedora 23 安装genymotion解决方案
由于学习android开发,都说genymotion模拟器给力,我就尝试了下,安装过程参考 :但出现这种错误:缺少库 libjpeg.so.8 ,我就各种goole和百度找到库(链接地址),解压之后放 ...
- volatile--共享数据必须保证可见性
在Effective Java中看到的,试了一下,有点意思,考查的知识点是volatile关键字. 下面这段代码,预期是打印it takes xxxx miliseconds. .但实际上,陷入了死循 ...
- Windows 7中,用Visual Studio开发WPF应用程序,实现从Windows Explorer中拖拽文件到应用程序,始终显示“无法拖放”符号问题解决方案
Are you running your application or Visual Studio that hosts the app under administrative privilege? ...
- iOS支付宝集成步骤;王刚韧的技术博客
- 10.13_extjs,combox,效率为什么这么低
(1)今天很累!经过三天的奋斗,终于完成了完全最优界面的快捷选址功能.今天是最后一天,最紧张,也最累. 为何我的效率不高呢?!我的时间都花费到哪儿呢?①阅读代码理解过去的逻辑:②关键技术上的再复习再巩 ...
- 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] ...
- 【POJ2094】【差分序列】Angry Teacher
Description Mr. O'Cruel is teaching Math to ninth grade students. Students of course are very lazy, ...
- (转)IOS开发之——绘图(CGContext)
周刊 更多 登录 IOS开发之——绘图(CGContext) 时间 2014-04-21 09:17:43 CSDN博客 原文 http://blog.csdn.net/zhenyu521131 ...
- centOS 6.4 vsftpd 500 illegal port command
原先配置好的vsftpd突然不行了,不知为啥,感觉跟网络有关,这个网络总是有dns拦截的现象,..小公司.真烦人,用联通线路就没问题, 但同事就是连不上,我的笔记本却可以连接上..我的ubuntn,同 ...