• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android之Pull解析XML,androidpullxml

Android之Pull解析XML,androidpullxml

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android pull解析xml,android pull解析,android adb pull,android pull,pull解析xml等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android之Pull解析XML,androidpullxml


一.Pull解析方法介绍

  除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件。Pull解析器的运行方式与SAX解析器相似。它也是事件触发的。Pull解析方式让应用程序完全控制文档该怎么样被解析。比如开始和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。通过Parser.getEventType()方法来取得事件的代码值,解析是在开始时就完成了大部分的处理。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。Pull解析是一个遍历文档的过程,每次调用next()、nextTag()、nextToken()和nextText()都会向前推进文档,并使parser停留在某些事件上面,但是不能倒退。然后把文档设置给Parser。它允许用户的应用程序代码从解析器中获取事件,这与SAX解析器自动将事件推入处理程序相反。Pull解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用Pull解析器,Android官方推荐开发者们使用Pull解析技术。Pull解析技术是第三方开发的开源技术,它同样可以应用于JavaSE开发。

  SAX与Pull的区别:SAX解析器的工作方式是自动将事件处理器进行处理,因此不能控制事件的处理主动结束;而Pull解析器的工作方式为允许应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。

  优点: 解析速度快,占用资源少。

  缺点: 数据不持久。

  使用场合: 对于XML文档较大但只需要文档的一部分。

二、PULL解析步骤

         1. 构建一个XmlPullParser对象

XmlPullParser parser = Xml.newPullParser();
parser.setInput(inputStream, "UTF-8");//设置事件源编码

         2. 获取事件类型

int eventType = parser.getEventType();

         3. 获取文本内容

//判断是否到结束节点 
while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {
                    //文档开始事件,可以进行数据初始化处理
                    case XmlPullParser.START_DOCUMENT:
                        ...
                        break;
            //开始元素事件
                    case XmlPullParser.START_TAG:
                        ...
                        break;
                    //结束元素事件
                    case XmlPullParser.END_TAG:
                        ...
                        break;
                }
                eventType = parser.next();
            }

调用parser.nextText()方法可以获取下一个Text类型元素的值。

三、PULL解析XML代码

1.创建一个XML文件itcase.xml,并将其放在res/raw文件夹下。
<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="23">
        <name>liming</name>
        <age>30</age>
    </person>
    <person id="20">
        <name>lixiangmei</name>
        <age>25</age>
    </person>
</persons>

如果没有raw文件夹,就在res文件夹下创建一个raw文件夹,并创建xml文件。

2.修改视图
<Button
        android:id="@+id/pull_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/fab_margin"
        android:gravity="center_horizontal"
        android:text="@string/PULL" />
<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
3.添加AnalyzePull类
package com.zhangmiao.analyzexmldemo;

import android.util.Xml;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

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

/**
 * Created by zhangmiao on 2016/12/14.
 */
public class AnalyzePull {

    public static List<Person> readXML(InputStream inputStream) {
        XmlPullParser parser = Xml.newPullParser();

        try {
            parser.setInput(inputStream, "UTF-8");
            int eventType = parser.getEventType();

            Person currentPerson = null;
            List<Person> persons = null;

            while (eventType != XmlPullParser.END_DOCUMENT) {
                switch (eventType) {
                    case XmlPullParser.START_DOCUMENT:
                        persons = new ArrayList<>();
                        break;
                    case XmlPullParser.START_TAG:
                        String name = parser.getName();
                        if (name.equalsIgnoreCase("person")) {
                            currentPerson = new Person();
                            currentPerson.setId(
                                    new Integer(parser.getAttributeValue(null, "id"))
                            );
                        } else if (currentPerson != null) {
                            if (name.equalsIgnoreCase("name")) {
                                currentPerson.setName(parser.nextText());
                            } else if (name.equalsIgnoreCase("age")) {
                                currentPerson.setAge(new Short(parser.nextText()));
                            }
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if (parser.getName().equalsIgnoreCase("person")
                                && currentPerson != null) {
                            persons.add(currentPerson);
                            currentPerson = null


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android之Pull解析XML,androidpullxml
  • Android之解析XML,androidxml
  • pull解析器: 反序列化与序列化,pull序列化

相关文章

  • 2017-05-26android如何改变editText控件中部分文字的格式,androidedittext
  • 2017-05-26利用散列连接从DB2通用数据库获得最佳性能
  • 2017-05-26android--获取屏幕高宽度工具类,android--工具类
  • 2017-05-26可展开的列表组件——ExpandableListView深入解析,expandablelist展开
  • 2017-05-26Android学习笔记(32):通知推送Notification浅析
  • 2017-05-26Android 点击文字实现跳转,android跳转
  • 2017-05-26Android5.0开发范例大全 读书笔记(五),android5.0范例
  • 2017-05-26Android新手入门2016(12)--基于Layout文件的AlertDialog
  • 2017-05-26Activity被回收导致fragment的getActivity为空,fragmentgetactivity
  • 2017-05-26SIMLock锁卡功能解析,simlock锁解析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Postgresql通过td_fdw连接查询 MS SQL Serever 2008 表
    • 算法导论--平摊分析之聚集分析,算法导论--平摊
    • Android搜索结果显示高亮(有数据滑动底部自动刷新)
    • Xamarin Android 应用程序内图标上数字提示,xamarinandroid
    • android 8.0 应用启动崩溃?
    • 几种执行shell的方法
    • Git安装与上传代码至Github,git上传github
    • 在Android上Kotlin的单元测试(KAD22),kotlinkad22
    • 阅读《Android 从入门到精通》(29)——LinearLayout 等四类方法
    • 绘制视图,根据轴测图绘制三视图

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有