XML解析之pull解析

XML解析PULL sdk源码查看路径(pull方式,创建xml是通过类实现首先,通过XmlSerializer得到创建xml的实例 xmlSerializer接着,通过 xmlSerializer 设置输出 xmlSerializer.setOutput,xmlSerializer.startDocument(“utf-8”, null)设置xml属性等然后,通过 xmlSerializer 创建 startDocument、startTag、text、endTag、endDocument等。 阅读详情

什么是pull解析


——- pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字

  • xml的声明返回数字0: START_DOCUMENT
  • xml的结束返回数字1: END_DOCUMENT
  • xml的开始标签返回数字2: START_TAG
  • xml的结束标签返回数字3: END_TAG
  • xml的文本返回数字4: TEXT

    说明了pull每个标识都是事件,它采用的就是事件驱动

直接上代码 :
对下面这个xml进行pull解析

<?xml version="1.0" encoding="utf-8"?>
<PlayList>
  <media id = "0" day = "00">
    <type>0</type>
    <name>江南</name>
    <path>E:\dotnet\TestWinApp\TestWinApp\music\江南.mp3</path> 
 </media>
  <media id = "1" day = "11">
    <type>1</type>
    <name>新不了情-015</name>
    <path>F:\电视剧\新不了情\新不了情-015.rmvb</path>
  </media>
  <media id = "2"  day = "22">
    <type>2</type>
    <name>新不了情-016</name>
    <path>F:\电视剧\新不了情\新不了情-016.rmvb</path>
  </media>
</PlayList>

可以看到,我们对javaBean来进行储存
先创建一个play.java对象

public class Play {

    private int id;
    private int day;
    private String name;
    private int type;
    private String path;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    @Override
    public String toString() {
        return "Play{" +
                "id=" + id +
                ", day=" + day +
                ", name='" + name + '\'' +
                ", type=" + type +
                ", path='" + path + '\'' +
                '}';
    } //重写toString 是为了打印验证的
}

解析步骤:
1. 创建pull工厂类
2. 通过工厂类,创建pull解析器
3. 设置xml文件来源,也可以设置编码
4. 进行事件一个一个分析
5. 在分析的过程中,进行对bean对象创建
6. 打印验证

  private static void xmlPullParserDemo() {

        List<Play> list  = null;
        try {
        //创建pull工厂类 并 创建解析器,链式编程
            XmlPullParser pullParser = XmlPullParserFactory.newInstance().newPullParser();
            //设置文件来源,也可以设置编码
            pullParser.setInput(new FileReader("E:\\CodeDemo\\HttpUrlConnection\\paly.xml"));
            int type = pullParser.getEventType();
            Play p = null;
            //进行事件一个一个分析
            while (type != XmlPullParser.END_DOCUMENT) {
                String nodeName = pullParser.getName();
                switch (type) {
                    case XmlPullParser.START_DOCUMENT:
                        list = new ArrayList<>();
                        break;

                    case XmlPullParser.START_TAG:
                    {
                        switch (nodeName) {
                            case "media":
                                p = new Play();
                                int count = pullParser.getAttributeCount();
                                for (int i = 0; i < count; i++) {
                                    String name = pullParser.getAttributeName(i);
                                    String value = pullParser.getAttributeValue(i);
                                    if(name.equals("id")) {
                                        p.setId(Integer.parseInt(value));
                                    } else {
                                        p.setDay(Integer.parseInt(value));
                                    }
                                }
                                break;
                            case "type":
                                p.setType(Integer.parseInt(pullParser.nextText()));
                                break;
                            case "name":
                                p.setName(pullParser.nextText());
                                break;
                            case "path":
                                p.setPath(pullParser.nextText());
                                break;
                        }
                    } break;
                    case XmlPullParser.END_TAG:
                        if (nodeName.equals("media")) {
                            list.add(p);
                        }
                        break;

                }
                //在分析的过程中,进行对bean对象创建
                type = pullParser.next();
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
            //打印验证
        }
    }

注意:
1. int type = pullParser.getEventType(); 这个是获得事件类型,要不停的后移,别忘记 type = pullParser.next();
2. String nodeName = pullParser.getName(); 是获取节点名,仅仅是获取名,不是值
3. 这个是pullParser.nextText()获取值的,而不是getText();
4. 最后一个,别忘记了,文章开始的那几个tag, 0,1,2是做什么的

Android Pull解析器实战教程:高效解析Xml文件.zip 本文还有配套的精品资源,点击获取 简介:本资源深入讲解了如何在Android开发中利用Pull解析器高效地读取和处理XML文件。Pull解析器以其轻量级和低内存占用的特点,特别适合移动设备使用。本文详细介绍了Pull解析器的工作原理和基本使用步骤,提供了关键方法的说明和示例代码,以及Pull解析器相较于其他解析技术的优势。通过本课程设计,开发者将掌握如何实现XML数据的快速... 阅读详情

相关推荐

用Multisim和74HC系列芯片,手把手教你搭建一个能“算数”的简易CPU模型

本文详细介绍了如何使用Multisim仿真软件和74HC系列芯片搭建一个简易CPU模型,重点解析了74HC194寄存器和74HC283加法器的核心功能与连接方法。通过分步图解和实战调试,帮助读者理解CPU工作原理,掌握数字电路设计的基本技能,适合计算机组成原理初学者和电子爱好者实践学习。

weixin_26843605的博客 139

XML解析PULL,月薪30K,浅谈Android消息机制原理

pull方式,解析xml是通过类实现首先,通过XmlPullParser得到解析xml的实例 xpp接着,通过 xpp设置输入 xpp.setInput(is, “utf-8”),声明定义保存xml信息的数据结构(如:Person数组)然后,通过 xpp 解析 START_DOCUMENT、START_TAG、TEXT、END_TAG、END_DOCUMENT等/** Pull方式,解析 XML */try {

芯_v_648374雨馨博客 348

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 333

Android XML解析学习——Pull方式

本文出自:http://blog.youkuaiyun.com/ichliebephone/article/details/5977959 一.基础知识 通过前面的学习我们已经知道了Android上使用SAX和DOM方式解析XML的方法,并且对两种做了简单的比较,通过比较我们知道对在往往内存比较稀缺的移动设备上运行的Android系统来说,SAX是一种比较合适的XML解析方式。 但是SAX方式的特点...

151

rk3568 修改开机动画

bootanimation.zip是一个Android设备启动时播放的动画文件,它包含了一系列的图片和描述文件,用于描述动画的播放顺序和持续时间。

weixin_35723192的博客 2727

智能手表竞品分析与市场调研报告

本报告旨在通过调研当前主流智能手表产品的功能特点、市场表现、用户反馈、定价策略等方面,辅助我司即将立项的Aurora Watch S1产品在功能定义、目标用户、定价区间、差异化竞争等方面做出科学决策。 调研范围包括国内外中端价位主流品牌(¥199~¥999),重点关注小米、华为、荣耀、Amazfit、Redmi、Haylou 等品牌的热销型号。

hoony123的博客 7万+

xml中的pull解析

xml解析分为三种dom,sax,pull。下面就为大家讲一下pull解析xml 1、Sax解析(simple api for xml)  使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。   class MyDefaultHander extends DefaultHandler{ pri

Mr.Peng的博客 827

智能车图像处理2-入门级分析1 ---基础扫线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 7744

第一行代码Android 第九章9.3 解析XML格式(Pull解析方式,SAX解析方式)

Android:解析XML格式(Pull解析方式,SAX解析方式)

XXX_17的博客 691

PrimeTime low power-多电压设计流程(2)

get_power_switches`、`get_supply_nets` 和 `get_supply_ports` 命令的操作方式类似,并具有类似的命令选项。PrimeTime 根据 UPF 命令构建电源供应网络,包括 create_power_domain、create_supply_net、create_supply_set、create_supply_port、set_domain_supply_net 和 connect_supply_net。电源集句柄是为电源域隐式创建的一个抽象电源集。

QRBQ 712

基于信号完整性的PCB设计原则

基于信号完整性的PCB设计建议,以单网络的信号布线作为评估对象,给出了一些最基础的设计指导,如何灵活运用,取决于设计者根据实际场景如何做取舍和判断。

一只豌豆象的博客 1758

Android之PULL解析XML

今天我们一起通过一个小例子来学习一下使用PULL解析器解析XML文件。 (1)首先我们放一个文件名为beauties.xml的XML文件到assets目录下,文件内容如下: 范冰冰 28 杨幂 23 然后在src目录下写一个与XML中

bear_huangzhen的专栏 2万+

信号与电源完整性5:轨道塌陷噪声/电源轨道噪声分析及降低解决方案

经过上一节关于串扰的分析,我们已经清楚,噪声问题不仅仅来源于信号网络;电源和地网络所产生的噪声,被反馈到其所在的元器件和信号网络时,其破坏力也是巨大的;本节所讨论的轨道塌陷噪声就是一个典型的实例。在经过电源的地网络的电流发生改变时,在电源和地之间的阻抗上将产生一个压降;由于该压降的产生,用电元件的电压将直接被拉低,甚至可能对电路产生功能性的错误。接下来硬小二将详细的分析电源轨道噪声和降低其的解决方法。...

fydar的博客 2241

XML解析(三),PULL解析XML

昨天写了【XML解析(一)】SAX解析XML 和【XML解析(二)】DOM解析XML两篇文章,有兴趣的朋友可以去看一下,今天我们来学习一下PULL解析XML,刚好可以跟SAX和DOC解析XML的两种方式对比学习,其实Android里面解析XML最常用的也就这三种,而这三种并不一定拘泥于Android开发,同样也可以用在J2EE开发中,下面我们进入本篇文章的学习。一、概述 PULL?,拉?,肯定不是什

宿罪的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java解析XML——Pull解析

除了可以使用SAX或DOM解析XML文件之外,在Android中可以使用Android内置的Pull解析器解析XML文件。 Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE。如果用在javaEE需要把其jar文件放入类路径中,因为Android已经集成进了Pull解析器,所以无需添加任何jar文件。android系统本身使用到的各种xml文件,其内部也是采用

u014471160的博客 2413

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android之Pull解析XML

一.Pull解析方法介绍   除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件。Pull解析器的运行方式与SAX解析器相似。它也是事件触发的。Pull解析方式让应用程序完全控制文档该怎么样被解析。比如开始和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。通过Parser.getEventType()方法来取得事件的代...

NJU phd 在读。 641

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android studio 下的 XML pull解析

Android原生系统的XML解析就是用的pull解析。由此我们可以得出两个信号: 1、pull解析肯定有独特的优势,能从dom、sax解析中脱颖而出。 2、我们在使用pull解析时不需要导入额外的第三方jar包,直接使用。

sinat_29398599的博客 4405

使用PULL方式解析XML

在Java开发中大家常用SAX或者DOM解析XML文件,两者的特点也很明显:SAX基于事件驱动,速度快,占用内存少;DOM一次性把文件读入内存中,以树的方式操作XML数据更灵活。 PULL是第三种优秀的XML解析方式,其工作原理和SAX类似,也是基于事件驱动的,SAX和PULL比较如下: (1)相同点: SAX/PULL都是基于事件的解析器。 解析速度快,占用内存少

Tony Chen的专栏 2045

Android解析XML方式(二)使用PULL解析XML

在前一篇中介绍了使用SAX解析XML,本篇来讲一下如何使用JAVA自带的PULL来解析XML数据,以及它们的各自优点在哪里。 首先来看一下什么是PULL解析器以及它的基本特征: PULL解析器的运行方式和SAX解析器很相似,它提供了类似的事件,如:开始元素和结束元素,使用parser,next() 可以进入下一个元素并且触发相应的事件,事件将作为代码被发送,因此可以使用一个switch来对事件

WILLIAM-HUAN 个人技术博客 4735

使用pull解析Xml

使用pull解析xml文件     在Android平台上除了可以使用SAX、DOM解析XML文件之外,还可以使用Android内置的Pull解析器解析XML文件。Pull解析器是一个开源的java项目,既可以用于Android,也可以用于JavaEE。如果用JavaEE需要把jar文件放入到类路径中,因为Android已经集成了Pull解析器,所以无需再添加任何jar文件。Android系

waxx716的专栏 720

Java 解析 XML 文件之 PULL 解析

Pull解析 【原理】:Pull解析的原理跟SAX解析的原理很相似。 【优点】:除了有了SAX的优点之外,Pull还多另外一个优点。Pull解析器的工作方式允许你在应用程序代码中主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需求的条件后不再获取事件,结束解析。(SAX是不能控制事件的处理主动结束) 【缺点】:跟SAX类似,我就不再多说了。 直接看代码,看看Pull到

1214

XML PULL解析

Pull和Sax类似,都是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序。因为是基于流的处理,因此Pull和Sax都比较节约内存资源,不会象Dom那样要把所有节点以对橡树的形式展现在内存中。 但Pull比Sax更简明,而且不需要扫描完整个流。          他们的区别为:SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制事件的处理

Caesardadi的专栏 1万+

Android中使用PULL方式解析XML文件

Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是, Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当

Android-Idea 1万+

java解析xml之PULL解析

除了可以使用SAX的方式解析XML外,也可以是用java自带的PULL来解析文件。 PULL 解析器的运行方式和sax解析器很相似,它提供了类似的事件。 如开始元素和结束元素,使用parser.next ()可以进行下一个元素,并且触发相应的事件,事件将作为代码被发送,因此可以使用一个switch来对事件进项选择,然后进行选择,然后进行响应的处理,当开始解析元素的时候,调用parser.nex

WannerWang的博客 878

XML解析之PULL

在Android中极力推荐的xmlpull方式解析xml。 为什么 STAX 解析方式 效率 好于 SAX ? 1、SAX 无选择性的,所有事件都会处理 解析方式,Stax 由用户控制需要处理事件类型 2、在使用Stax进行数据解析时,随时终止解析         环境:             xmlpull_1_1_3_4c.jar http://www

yinjing8435的博客 444

PULL方式解析xml

本文讲述: 用pull 方式解析xml ,需要导入 kxml2-2.2.2.jar 包 。 这种解析方法很简单,只用到 3个类: XmlPullParserFactory , XmlPullParser , XmlPullParserException 。用法见程序。 persons.xml 黄老师 26 杨老师 28 客户端左 和 服务器端右

Fight for Dignitity & Responsibility 的专栏 1330
上一篇: JSON解析之Gson
下一篇: XML解析之SAX解析
android_lyp
博客等级 码龄11年 14粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值