dom解析:基于全文加载的解析方式   sax解析:基于事件的逐行解析方式  pull解析:同sax

        



    XmlPullParser


    //解析xml文件读取短信内容

    public static int restoreSms(Context context) {

        ArrayList<SmsBean> arrayList = null;

        SmsBean smsBean = null;

        try{

            //1.通过Xml获取一个XmlPullParser对象

            XmlPullParser xpp = Xml.newPullParser();

            //2.设置XmlPullParser对象的参数,需要解析的是哪个xml文件,设置一个文件读取流

        

            //通过context获取一个资产管理者对象

            AssetManager assets = context.getAssets();

            //通过资产管理者对象能获取一个文件读取流

            InputStream inputStream = assets.open("backupsms.xml");

            xpp.setInput(inputStream,"utf-8");

            //xpp.setInput(context.openFileInput("backupsms2.xml"), "utf-8");

            //3.获取当前xml行的事件类型

            int type = xpp.getEventType();

            //4.判断事件类型是否是文档结束的事件类型

            while(type != XmlPullParser.END_DOCUMENT){

                //5.如果不是,循环遍历解析每一行的数据。解析一行后,获取下一行的事件类型



                String currentTagName = xpp.getName();

                //判断当前行的事件类型是开始标签还是结束标签

                switch (type) {

                case XmlPullParser.START_TAG:

                    if(currentTagName.equals("Smss")){

                        //如果当前标签是Smss,需要初始化一个集合

                        arrayList = new ArrayList<SmsBean>();

                    }else if(currentTagName.equals("Sms")){



                        smsBean = new SmsBean();

                        smsBean.id = Integer.valueOf(xpp.getAttributeValue(null, "id"));



                    }else if(currentTagName.equals("num")){

                        smsBean.num =  xpp.nextText();

                    }else if(currentTagName.equals("msg")){

                        smsBean.msg =  xpp.nextText();

                    }else if(currentTagName.equals("date")){

                        smsBean.date =  xpp.nextText();

                    }

                    break;

                case XmlPullParser.END_TAG:

                    //当前结束标签是Sms的话,一条短信数据封装完成, 可以加入list中

                    if(currentTagName.equals("Sms")){

                        arrayList.add(smsBean);

                    }

                    break;

                default:

                    break;

                }



                type = xpp.next();//获取下一行的事件类型

            }



            return arrayList.size();



        }catch (Exception e) {

            e.printStackTrace();

        }

        return 0;

    }

Android使用pull解析xml格式的数据的更多相关文章

  1. scrapy 解析xml格式的数据

    XMLFeedSpider 主要用于 解析 xml格式的数据 创建一个scrapy 项目文件 scrapy startproject xxx 创建一个spider scrapy genspider - ...

  2. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  3. Android中用PULL解析XML

    解析XML的方式有DOM,SAX,PULL,那为什么要在Android中使用PULL解析呢?首先来说一下PULL解析的优点,然后再说一下其他两种解析方式的缺点,答案就清晰可见啦. DOM不适合文档较大 ...

  4. Android使用pull解析xml

    一.理论准备     Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, ...

  5. android——使用pull解析xml文件

    1.persons.xml 将persons.xml文件放到src目录下.其代码如下: <?xml version='1.0' encoding='UTF-8' standalone='yes' ...

  6. [android] 采用pull解析xml文件

    /***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...

  7. Android中pull解析XML文件的简单使用

    首先,android中解析XML文件有三种方式,dom,sax,pull 这里先讲pull,稍候会说SAX和DOM pull是一种事件驱动的xml解析方式,不需要解析整个文档,返回的值是数值型,是推荐 ...

  8. 解析XML格式数据

    学习解析XML格式的数据前,搭建一个简单的web服务器,在这个服务器上提供xml文本用于练习. 一.搭建Apache服务器 在Apache官网下载编译好的服务器程序,安装.对于Windows来说127 ...

  9. NSXMLParser解析xml格式

    NSXMLParser解析xml格式的数据 用法如下: 首先,NSXMLParser必须继续NSXMLParserDelegate协议 @interface XMLHelper : NSObject ...

随机推荐

  1. 想看Vue文档,cn放错位置,误入xx网站...

    昨晚,DD在微信群(点击加入)里看到有小伙伴说,想去Vue官网看中文文档,不当心把cn写错了位置,结果进入了xx网站... 老司机们应该都知道,Vue官网的中文文档地址是:https://cn.vue ...

  2. 基于Spring MVC + Spring + MyBatis的【银行账户信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45604661 练习点设计: 模糊查询.删除.新增.修改 一.语言和环境 实现语言:J ...

  3. Java面向对象笔记 • 【第3章 继承与多态】

    全部章节   >>>> 本章目录 3.1 包 3.1.1 自定义包 3.1.2 包的导入 3.1.3 包的访问权限 3.1.4 实践练习 3.2 继承 3.2.1 继承概述 3 ...

  4. 编写Java程序,使用JTable表格组件展现人员信息列表

    返回本章节 返回作业目录 需求说明: 使用JTable组件显现人员信息列表 实现思路: 创建一个JTable对象. 创建一个JScrollPane对象(显示横向和纵向滚动条). 将表格添加到滚动面板. ...

  5. SQL Server 数据库添加主键,唯一键,外键约束脚本

    -- 声明使用数据库use 数据库;go -- 添加主键(primary key)约束-- 基本语法-- 判断主键约束是否存在,如果存在则删除,不存在则添加if exists(select * fro ...

  6. 制造运营管理 (MOM) 的工作流驱动方法

    介绍 "在企业中使用的任何技术的第一条规则是,应用于高效运营的自动化将放大效率.第二个是自动化应用于低效率的操作会放大低效率." - 比尔盖茨 . 工作流是结构化的活动,主要涉及人 ...

  7. 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!

    教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...

  8. GDB调试-从入门到实践

    你好,我是雨乐! 在上篇文章中,我们分析了线上coredump产生的原因,其中用到了coredump分析工具gdb,这几天一直有读者在问,能不能写一篇关于gdb调试方面的文章,今天借助此文,分享一些工 ...

  9. CSS 表格基本使用 案例

    知识点普及: 表格是html中经常使用到的,简单的使用可能很多人都没问题,但是更深入的了解的人恐怕不多,下面我们先来看一下如何使用. <table>是<tr>的上层标签 < ...

  10. Git_添加、删除远端仓库中的文件

    一.将文件添加到远端仓库 1.新增文件 2.使用git add 将文件添加到本地缓存中 3.使用git commit 将文件添加到本地仓库中 4.使用git push 将本地仓库中的修改同步到远端仓库 ...