/***********2016年5月6日 更新**********************/

知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别?

刘吉财:

主要有dom,sax和pull三种,不过貌似官方推荐使用pull,这个不是很了解,但和sax类似,都是利用事件驱动的,根据不同的标签来处理事件。dom的话是把xml文件用树的形式,在解析过程中将整棵树保存到内存中,效率相对于sax来说比较低。所以建议使用sax啦

/*************************************************/

新建一个天气信息的xml文件,新建一个业务包,包里面一个业务类,暴露获取天气的方法,新建一个domain包,包里面一个天气的业务bean,业务bean里面根据xml的节点建立成员属性,生成get set方法,生成有参和无参的构造函数,在业务方法里面解析xml文件塞到业务集合里面。

Javaweb里面解析xml,DOM解析,一次性加载到内存里面,生成树状的结构,消耗的内存大,SAX解析,基于事件的解析,速度快不能倒退,android下是pull解析,类似SAX解析

获取XmlPullParser对象,通过Xml.newPullParser方法,

调用XmlPullParser对象的setInput(inputSTream,inputEncoding),文件输入流,编码

调用XmlPullParser对象的getEventType()获得事件类型,有Xml.START_DOCUMENt ,Xml.END_DOCUMENT,Xml.START_TAG,Xml.END_TAG

通过循环不停的取

While(类型不等于END_DOCUMENT){

}

在这个循环里面switch进行判断,当START_TAG的时候,调用XmlPullParser对象的getName()方法获取节点的名称,等于一个值得时候,创建List集合,等于一个值得时候创建业务对象,调用XmlPullParser对象的getAttributeValue()可以获取属性,调用nextText()可以获取节点内容,当END_TAG的时候业务对象add放入集合,

当Xml文件在类路径下,可以通过类加载器直接加载xml文件,例如 MainActivity.class.getClassloader().getResourceAsStream(文件名),为了好看点,可以在业务bean里面生成toString()方法,可以方便打印查看,

[android] 采用pull解析xml文件的更多相关文章

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

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

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

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

  3. Andorid- 反序列化,采用pull解析 xml 文件

    MainActivity.java 主入口,通过获得 XML文件 ,然后将解析后的文件标签以及文本内容拼接到 StringBuffer中,最后显示在TextView上 package com.exam ...

  4. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  5. 使用PULL解析XML文件

    转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...

  6. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  7. pull解析xml文件

    pull解析xml文件 先自己写一个xml文件,存一些天气信息 拿到xml文件 InputStream is = getClassLoader().getResourceAsStream(" ...

  8. Android pull解析xml文件

    本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...

  9. Android SAX、DOM、Pull解析xml文件剖析与案例讲解

    XML介绍 XML(Extensible Markup Language) 即可扩展标记语言,与HTML一样,都是SGML(Standard Generalized Markup Language,标 ...

随机推荐

  1. cvpr2018(转发一篇头条)

    CVPR 2018:腾讯图像去模糊.自动人像操纵最新研究 新智元 2018-05-29 14:13:04 新智元报道 来源:腾讯优图 编辑:江磊.克雷格 [新智元导读]即将在6月美国盐湖城举行的计算机 ...

  2. 一、Java和JavaScript

    JavaScript诞生于1995年,所以他得叫我一声姐姐,(*^__^*) .当时它的主要任务就是表单验证,在还没JavaScript的时候,进行表单验证的时候必须要把数据提交到服务器,才能进行表单 ...

  3. 使用Nginx+Uwsgi部署Python Flask项目

    第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...

  4. 使用HOG特征+BP神经网络进行车标识别

    先挖个坑,快期末考试了,有空填上w 好了,今晚刚好有点闲,就把坑填上吧. //-------------------------------开篇---------------------------- ...

  5. 吴恩达机器学习笔记15-假设陈述(Hypothesis Representation)

    在分类问题中,要用什么样的函数来表示我们的假设呢?此前说过,希望我们的分类器的输出值在0 和1 之间,因 此,我们希望想出一个满足某个性质的假设函数,这个性质是它的预测值要在0 和1 之间.回顾在一开 ...

  6. 全栈开发工程师微信小程序 - 上

    全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...

  7. Core 接口发布报错

    An error occurred while starting the application 提示:启动应用程序时发生错误 这个错误在Startup启动项里面 要找具体的报错位置 如下 这样就可以 ...

  8. 一条SQL语句在MySQL中如何执行的

    本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...

  9. str() vs repr() in Python

    str() 和 repr() 都是用作一个对象的字符表示. 1 str()的举例: s = 'Hello, Geeks.' print str(s) print str(2.0/11.0) 输出结果: ...

  10. Scala - 快速学习01 - Scala简介

    Scala简介 Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,Scala的设计吸收借鉴了许多种编程语言的思想,具备面向对象编程.函数式编程等特性 ...