`

2013.03.19(9)———android xml解析之pull

阅读更多
2013.03.19(9)———android xml解析之pull

参考:http://www.iteye.com/topic/763949

最近用到pull来解析xml,避免忘记,记一下

Pull解析和Sax解析很相似,都是轻量级的解析,在Android的内核中已经嵌入了Pull,所以我们不需要再添加第三方jar包来支持Pull。

Pull解析和Sax解析不一样的地方有

(1)pull读取xml文件后触发相应的事件调用方法返回的是数字

(2)pull可以在程序中控制想解析到哪里就可以停止解析。

看实例:

book.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="12">
        <name>thinking in java</name>
        <price>85.5</price>
    </book>
    <book id="15">
        <name>Spring in Action</name>
        <price>39.0</price>
    </book>
</books
>




Pull解析的代码如下PullParseService.java

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

import com.xtlh.cn.entity.Book;

public class PullParseService {
    public static List<Book> getBooks(InputStream inputStream) throws Exception{
        List<Book> books = null;
        Book book = null;
        XmlPullParser parser = Xml.newPullParser();
        parser.setInput(inputStream, "UTF-8");
        
        int event = parser.getEventType();//产生第一个事件
        while(event!=XmlPullParser.END_DOCUMENT){
            switch(event){
            case XmlPullParser.START_DOCUMENT://判断当前事件是否是文档开始事件
                books = new ArrayList<Book>();//初始化books集合
                break;
            case XmlPullParser.START_TAG://判断当前事件是否是标签元素开始事件
                if("book".equals(parser.getName())){//判断开始标签元素是否是book
                    book = new Book();
                    book.setId(Integer.parseInt(parser.getAttributeValue(0)));//得到book标签的属性值,并设置book的id
                }
                if(book!=null){
                    if("name".equals(parser.getName())){//判断开始标签元素是否是name
                        book.setName(parser.nextText());
                    }else if("price".equals(parser.getName())){//判断开始标签元素是否是price
                        book.setPrice(Float.parseFloat(parser.nextText()));
                    }
                }
                break;
            case XmlPullParser.END_TAG://判断当前事件是否是标签元素结束事件
                if("book".equals(parser.getName())){//判断结束标签元素是否是book
                    books.add(book);//将book添加到books集合
                    book = null;
                }
                break;
            }
            event = parser.next();//进入下一个元素并触发相应事件
        }//end while
        return books;
    }
}


里面使用到的Book.java类

public class Book {
    private int id;
    private String name;
    private float price;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    @Override
    public String toString(){
        return this.id+":"+this.name+":"+this.price;
    }
}


分享到:
评论

相关推荐

    计算机视觉大作业-三维重建.zip

    计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机...

    基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj

    基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj

    android之Pull解析XML文件

    本文将深入探讨如何在Android中使用Pull解析器来处理XML文件,这是一种高效且节省资源的方式。 Pull解析器是Android提供的一个API,它允许应用程序通过事件驱动的方式解析XML文档。与SAX解析器类似,Pull解析器不...

    使用Android自带的XML解析器PULL解析器简单的解析xml

    Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...

    Android之PULL解析XML文件——新浪微博客户端首页效果

    在本主题"Android之PULL解析XML文件——新浪微博客户端首页效果"中,我们将深入探讨如何利用PULL解析器(PullParser)来处理XML数据,从而实现类似新浪微博客户端首页的动态效果。这种效果通常包括新闻标题、摘要、...

    NPSWF32调试版本.rar

    ▕ ▕ ▕—————————————————————————————————————— ▕ ▕——[13.27MB] 【NPSWF32调试版本_11.1.102.55_debug】 ▕ ▕ ▕——[856 B] flashplayer.xpt ▕ ▕ ▕——[3.90MB...

    2918.D密钥分散管理系统——密钥确认算法实现 开题报告.doc

    2918.D密钥分散管理系统——密钥确认算法实现 开题报告.doc

    FastReport.Net 4.0+V2013.2.5_附安装_破解_个人测试程序

    FastReport.Net+V2013.2.5+For+.Net4.0_附安装与破解_个人测试程序 1.首先安装FastReport.Net+V2013.2.5 For Net 4.0 的原始安装文件[FRNetDemo2010.msi] 2.将FastReport.Net+V2013.2.5+For+.Net4.0文件夹中的...

    安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip

    安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android...

    xml.zip_Android XML_android

    本压缩包"xml.zip_Android XML_android"显然是一个关于Android平台下XML解析的资源集合,可以直接导入Eclipse IDE进行学习和使用。 Android中的XML解析主要分为两种方式:DOM解析和SAX解析。 1. DOM解析(Document...

    2010-2013.12高清日语N2日语2级考试真题及答案+解析+MP3听力原文(8套合集).zip

    2010-2013.12高清日语N2考试真题及答案+解析+MP3听力原文(8套合集) n2 2010.12解析+听力原文+答案.pdf n2 2010.7真题.pdf n2 2010.7解析+听力原文+答案.pdf n2 2011.12真题.pdf n2 2011.12解析+听力原文+答案.pdf ...

    2011.10.19——— android 显示一行内容并录制其音频

    这篇博客“2011.10.19——— android 显示一行内容并录制其音频”可能详细探讨了如何实现这个功能。虽然描述部分没有提供具体信息,但我们可以基于标签“源码”和“工具”来推测文章内容,以及从文件名...

    android String.xml Excel 相互转换工具

    为了方便管理这些多语言资源,Android使用`String.xml`文件来存储应用中的文本字符串。然而,手动编辑这些XML文件既耗时又容易出错,尤其是在处理大量文本时。这时,就需要借助一些工具进行`String.xml`与Excel之间...

    C语言项目——通讯录管理系统.zip

    C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言...

    Android中文翻译组——Android开发者指南(2).chm

    Android中文翻译组是一个非盈利性质的开源组织,至今已超过300人报名参与,关于翻译组的介绍,请看这里。欢迎更多朋友加入,发邮件到over140@gmail.com申请加入。 Android中文翻译组WIKI网站:...

    XML.rar_XML phone_XML 解析

    4. 使用轻量级解析库:针对移动设备性能限制,选择性能优秀的XML解析库,如Android的Pull解析器。 六、实际应用案例 以Android为例,使用XML解析XML文件时,可以利用内置的`org.xmlpull.v1.XmlPullParser`进行SAX...

    天正建筑CAD快捷键-较全常用.doc

    9. Ctrl+B/F/G/L:栅格捕捉/对象捕捉/栅格/正交——控制这些绘图辅助工具。 10. Ctrl+U/W:极轴追踪/对象追踪——控制追踪模式。 11. Ctrl+A:全选——选择所有对象。 12. Ctrl+E:轴测图方向——在轴测图中设置视图...

    中考英语外研版初二下模块4练习学案02:短语总结+练习及解析.docx

    9. **a recording for** —— 为...的录音。 10. **wait for** —— 等待。 11. **send ... by email** —— 通过电子邮件发送... 12. **connect ... to/with** —— 连接...到... 13. **play the violin** —— 拉...

    android xml解析1

    在JAVA中有两种常见的XML解析方式,DOM和SAX,DOM在解析的时候会将所有的数据一次性载入内存中进行解析,在数据量比较大的情况下,效率非常低.尤其在手机这种对内存和性能要求比较苛刻的设备里面这种方法并不可取. ...

    综合实践活动二年级(下册)教(学)案.doc

    5. 维护公共卫生 ———————————————————— 第九周 6. 流鼻血时怎么办 ———————————————--- 第十一周 7. 食用冷饮要适当 ———————————————--- 第十三周 8. 夏天要睡...

Global site tag (gtag.js) - Google Analytics