Android开发pool解析xml

xml在开发中的作用不可小觑,很多时候我们都要用到这种文件,所以学习它的解析方式很是必要。

我们都知道java中xml的解析有:dom,SAX,但是Android下我们使用pool解析,是更为方便,而且有专门的api可以使用。

  dom:一次加载到内存,生成一个树状结构,消耗的内存较大
  SAX:基于事件,速度快,效率高,不能回退。

1,首先我们需要定义出来解析器,它的定义方式,是通过Xml new出来的,这点要记着。

XmlPullParser parser = Xml.newPullParser();

2,然后我们需要,设置xml的文件源,也即初始化解析器,使用的方法如下,同时我们还要设置起编码格式,xml的编码一般为"utf-8",所以第二个参数我们就写成"utf-8",而第一个参数的话,如果我们的xml放在本地的话,我们可以通过类加载器来得到,且其返回类型就是inputstream。

parser.setInput(InputStream inputStream, String inputEncoding)

类加载器得到文件的位置,并返回inputstream。

MainActivity.class.getClassLoader().getResourceAsStream("xml文件路径")

3,初始化解析器后,我们就可以开始了,xml的标签很多,这里呢,我们需要调用的方法是。

int type = parser.getEventType();

我们查看api可知,这里获得的是标签,

比如:(这是系统中的定义)

int START_DOCUMENT = 0;

int END_DOCUMENT = 1;

int START_TAG = 2;

int END_TAG = 3;

从名字我们就能很容易的知道其含义,xml开始与结束的标签,以及一个标签对的开始与结束。

所以我们就可以对获得type与这些标签进行对比,这样我们就可以获取标签的值。

4,解析xml

    while (type != XmlPullParser.END_DOCUMENT) {
                switch (type) {
                case XmlPullParser.START_TAG:
                    if ("infos".equals(parser.getName())) {
                        // 解析到了全局开始标签。
                        weatherinfos = new ArrayList<WeatherInfo>();
                    } else if ("city".equals(parser.getName())) {
                        weatherinfo = new WeatherInfo();
                        // 得到id
                        String id = parser.getAttributeValue(0);
                        weatherinfo.setId(Integer.parseInt(id));
                    } else if ("temp".equals(parser.getName())) {
                        String temp = parser.nextText();
                        weatherinfo.setTemp(temp);
                    }
                    break;

                case XmlPullParser.END_TAG:
                    if ("city".equals(parser.getName())) {
                        // 一个城市的信息处理完毕。
                        weatherinfos.add(weatherinfo);
                        weatherinfo = null;
                    }

                    break;

                }

                type = parser.next();
            }

xml的解析后,我们还要保存它的值,所以我就把每次xml解析后的值,放到集合中,

这里要注意几点,

parser.getAttributeValue(0);是得到标签中的id值。每解析完一次后,我们要把循环往下走,所以type = parser.next();

这样我们就可以解析出xml中的数据了。

作者:Darren

微博:@IT_攻城师

出处:http://www.cnblogs.com/fengtengfei/

时间: 2024-11-08 17:25:38

Android开发pool解析xml的相关文章

Android开发之解析XML并实现三级联动效果

请尊重他人的劳动成果,转载请注明出处:Android开发之解析XML并实现三级联动效果 本实例主要应用XmlPullParser解析XML文档中的省市区,然后将数据绑定到Spinner上实现三级联动的效果.关于XmlPullParser的详解大家可以参考<Android开发之使用PULL解析和生成XML>一文. 运行效果图: 程序代码: 核心代码: <pre name="code" class="java">package com.jph.s

【Android进阶】解析XML文件之使用DOM解析器

在前面的文章中,介绍了使用SAX解析器对XML文件进行解析,SAX解析器的优点就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析.DOM解析器的优点可能是理解起来比较的直观,当然,每个人对不同的解析方法可能有不同的喜好.但是DOM解析器有个比较大的缺点,就是占用内存比较多,在Android中的XML解析中,还是更推荐其他的解析方式. 下面介绍使用DOM解析器对XML进行解析. 下面是我们需要解析的xml文件 <?xml version="1.0" encodin

Android网络下解析XML

XML(Extensible Markup Language)可拓展标记语言,它与HTML一样,都是SGML(标准通用标记语言),它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据.在Android下有三种方式解析XML,分别为SAX.DOM.PULL:它们有各自的特点,在网络编程中会经常使用,根据实际情况选择哪一种解析方式. 1.内存占用 由于Android手机性能相对于PC还是

Android开发AlertDialog解析

打开源码,首先映入眼帘的是三个构造方法,但这三个构造方法都是protected类型的, 可见,不允许我们直接实例化AlertDialog. 因此,我们再看别的有没有方法.可以实例化 再仔细一看,发现一个变量 , AlertController mAlert; 这个才是我们今天的主角,重点研究它. mAlert的定义是在 ,以上我们提到的AlertDialog的构造函数, 此外,我们还发现,AlertDialog中几乎所有的方法都是通过这个mAlert变量来操作的, 也就是说,AlertDialo

android 通过pull解析xml文件

1 package com.example.xmldemo.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStreamReader; 9 import java.

Android 创建与解析XML(五)—— Dom4j方式

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 1.Dom4j概述 dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full sup

Android开发系列之XML解析

 xml文件存储是常用的数据存储方式,xml解析常用的有SAX解析.DOM解析.PULL解析等.本篇讲述xml的格式,xml的写入方式以及xml的解析.   .xml格式 <cartons> <carton id="1"> <name>天空之城</name> <maker>宫崎骏</maker> <style>冒险</style> <date>1986年8月2日</date

Android之DOM解析XML

一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息. Android完全支持DOM解析.利用DOM中的对象可以对XML文档进行读取.搜索.修改.添加和删除等操作. DOM的工作原理:使用DOM对XML文件进行操作时,首先要解析文件,将文件分为独立的元素.树形和注释等,然后以节点树的形式在内存中对XML文件进行表示,就可以通过节点树访问文档的内容,并

Android中用PULL解析XML

解析XML的方式有DOM,SAX,PULL,那为什么要在Android中使用PULL解析呢?首先来说一下PULL解析的优点,然后再说一下其他两种解析方式的缺点,答案就清晰可见啦. DOM不适合文档较大,内存较小的场景.DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树.检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息.由于DOM在内存中以树形结构存放,因此检索和更新效率会更高.但是对于特别大的文档,解析和加载整个文档将