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数据的快速... 阅读详情

相关推荐

Meta开源Ego-Exo4D数据集:如何用1400小时多模态视频训练你的AI模型

Meta开源的Ego-Exo4D数据集包含1400小时多模态视频,涵盖第一人称和第三人称视角、眼动追踪、IMU传感器等多种模态,是AI模型训练的宝贵资源。本文详细介绍了从数据集下载、预处理到模型训练的全流程,帮助研究者高效利用这一多模态数据集进行AI模型开发。

weixin_29159441的博客 342

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

解决屏幕不亮难题:慷智SerDes DE信号极性配置避坑指南

本文深入探讨了基于慷智AIM95x系列SerDes芯片的嵌入式显示系统开发中,因DE信号极性配置不匹配导致屏幕不亮的典型故障。文章详细解析了DE信号的核心作用与极性定义,提供了慷智SerDes芯片中DE极性寄存器的具体配置方法与调试记录,并给出了从隔离问题、对比时序到波形验证的系统性排查流程,帮助工程师快速定位并解决此类隐蔽问题。

weixin_29185493的博客 139

Android XML解析学习——Pull方式

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

151

【机器学习】实验2,基于回归分析的大学综合得分预测(完整代码实现+分析)

大学排名是一个非常重要同时也极富挑战性与争议性的问题,一所大学的综合实力涉及科研、师资、学生等方方面面。目前全球有上百家评估机构会评估大学的综合得分进行排序,而这些机构的打分也往往并不一致。在这些评分机构中,世界大学排名中心(Center for World University Rankings,缩写CWUR)以评估教育质量、校友就业、研究成果和引用,而非依赖于调查和大学所提交的数据著称,是非常有影响力的一个。

高丽大学人工智能硕士在读|专注大模型、RAG、OCR与AI工程实践 1973

VSCode配置ClangFormat:让C++大括号乖乖不换行(附常见样式对比)

本文详细介绍了如何在VSCode中配置ClangFormat,实现C++代码大括号不换行的格式化风格。通过对比Attach、Allman等主流大括号样式,并提供从快速设置到项目级配置的完整指南,帮助开发者打造统一、高效的代码格式化工作流,提升团队协作效率。

weixin_28835551的博客 215

xml中的pull解析

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

Mr.Peng的博客 827

①电子产品拆解分析-暖手宝

电子产品拆解分析-暖手宝 ①按键三档调温暖手; ②长按进入氛围呼吸灯; ③安卓接口充电以及支持USB输出;

a6662580的博客 5294

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

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

XXX_17的博客 691

Python爬虫实战:如何从Google Maps和OpenStreetMap抓取地理坐标数据

地点名称:地理位置的名称或地址。地理坐标:经度和纬度。类别信息:比如餐馆、商店、公园等。评论数据:如果可用,获取用户评论。本文介绍了如何使用Python爬虫从Google Maps和OpenStreetMap抓取地理坐标数据,并展示了如何存储和分析这些数据。通过实际的代码示例,您可以学习到如何处理不同类型的地图数据抓取任务,以及如何应对反爬虫机制。掌握这些技术后,您可以进行更广泛的地理数据分析,提供更有价值的地理信息服务。

2201_76125261的博客 1039

YOLOv11改进 | Mamba-YOLOv11-L:基于SSM的高效全局建模,精度与效率的双重突破

摘要: 本文提出Mamba-YOLOv11-L,通过集成状态空间模型(SSM)改进YOLOv11的全局建模能力。针对YOLOv11在复杂场景中全局依赖缺失、精度-效率矛盾等问题,SSM以$O(N)$计算复杂度实现长程语义捕捉。改进后的模型在工业缺陷检测(Recall↑12%)、边缘设备部署(内存↓16%)、多尺度目标检测(小目标mAP↑9%)等场景表现优异,推理速度保持>40 FPS。核心创新包括轻量化SSM模块设计(稀疏状态转移+局部上下文融合)及与YOLOv11骨干的深度集成,代码实现展示了SSM

走向CTO的路上... 566

Android之PULL解析XML

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

bear_huangzhen的专栏 2万+

Python爬虫实战:逆向工程与异步爬虫技术,高效抓取国家知识产权局专利数据

相比于传统的Selenium,Playwright由微软开发,支持多浏览器(Chromium, Firefox, WebKit),API更现代,执行速度更快,并且能轻松录制用户操作生成代码。通常,列表中的摘要信息是缩略的,我们需要进入每个专利的详情页获取完整信息(如主权要求、法律状态等)。我们的第一步是手动操作一遍搜索流程,并用Playwright的“录制”功能或开发者工具,找出真正返回专利数据的那一个或多个网络请求。以友好的、对人类行为模拟的方式爬取数据是基本的网络礼仪,也能有效避免你的IP被封锁。

2201_76125261的博客 2419

XML解析(三),PULL解析XML

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

宿罪的博客 1万+

IEM模型,地表粗糙度模拟

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java解析XML——Pull解析

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

u014471160的博客 2413

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android之Pull解析XML

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

NJU phd 在读。 641

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、付费专栏及课程。

余额充值