博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[android] 采用pull解析xml文件
阅读量:7175 次
发布时间:2019-06-29

本文共 1088 字,大约阅读时间需要 3 分钟。

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

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

 

刘吉财:

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

 

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

 

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

 

 

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

 

 

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

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

调用XmlPullParser对象的getEventType()获得事件类型,有Xml.START_DOCUMENt Xml.END_DOCUMENTXml.START_TAGXml.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()方法,可以方便打印查看,

转载地址:http://labzm.baihongyu.com/

你可能感兴趣的文章
Building Redis for use on Cygwin(转)
查看>>
当“星爸爸”遇到“马爸爸” 阿里的AR技术售卖咖啡文化
查看>>
wpf只运行一个实例
查看>>
10天学安卓-第十天
查看>>
索引键的唯一性(3/4):唯一聚集索引上的唯一和非唯一非聚集索引
查看>>
[老老实实学WCF] 第十篇 消息通信模式(下) 双工
查看>>
CSS入门经典-知识点摘录
查看>>
[WPF 如何] 如何向 ComboBox 添加一个空白选项
查看>>
学习笔记DL008:概率论,随机变量,概率分布,边缘概率,条件概率,期望、方差、协方差...
查看>>
js数组去重的4个方法
查看>>
SharePoint 2013 工作流之年假审批Designer配置篇
查看>>
市场研究:2018年NAND闪存市场将重新进入平衡状态
查看>>
Linux下samba的安装与配置
查看>>
集群增量会话管理器——DeltaManager
查看>>
MySql的安装与卸载
查看>>
探知互联网未来 关注中国开放网络峰会
查看>>
云安全是否能跟上云存储的爆炸性增长
查看>>
大数据:安全分析产品的发展重点
查看>>
微软认知服务为企业带来云AI
查看>>
关于linux下的mysql配置流程以及项目发布的流程
查看>>