使用XmlPullParser解析xml文件。

要解析的xml文件如下所示。

weather.xml

<?xml version="1.0" encoding="utf-8"?>
<info><city id="1"><name>Shenzhen</name><temp>30</temp></city><city id="2"><name>Beijing</name><temp>20</temp></city>
</info>

XmlPullParser的next()移动到下一个节点。

XmlPullParser的nextText()获取节点的值。

getAttributeValue(null, "id")根据属性名称获取节点中属性的值.第一个参数一般是null,第二个参数是属性名称。

MainActivity.java如下所示。

package com.example.xmlpullparsertest;import android.content.res.XmlResourceParser;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;import org.xmlpull.v1.XmlPullParser;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WeatherInfo weatherInfo = null;// 保存多个节点的列表List<WeatherInfo> infos = null;// 获取xml文件XmlPullParser xmlPullParser = getResources().getXml(R.xml.weather);try {//getEventType()方法返回XMLStreamConstants接口中定义的一个标记常量,表示当前指针所指向标记(或事件)的类型int mEventType = xmlPullParser.getEventType();while (mEventType != XmlPullParser.END_DOCUMENT) {switch (mEventType) {case XmlPullParser.START_DOCUMENT:break;case XmlPullParser.START_TAG:// 判断是否是"info"节点if ("info".equals(xmlPullParser.getName())) {infos = new ArrayList<WeatherInfo>();}else if ("city".equals(xmlPullParser.getName())) {weatherInfo = new WeatherInfo();// 通过属性名称获取节点属性的值// 获取"city"节点的”id“属性的值String id = xmlPullParser.getAttributeValue(null, "id");weatherInfo.setId(Integer.parseInt(id));}else if ("name".equals(xmlPullParser.getName())) {// 获取节点的值String str = xmlPullParser.nextText();weatherInfo.setName(str);}else if ("temp".equals(xmlPullParser.getName())) {// 后去temp节点对应的值String str = xmlPullParser.nextText();weatherInfo.setTemp(str);}break;case XmlPullParser.END_TAG:// 根据END_TAG,将获取的信息添加到Array中if ("city".equals((xmlPullParser.getName()))) {infos.add(weatherInfo);weatherInfo = null;}break;}// 移动到下一个节点,继续解析mEventType = xmlPullParser.next();}} catch (Exception e) {Toast.makeText(this, "fail", Toast.LENGTH_SHORT);}// 查看for(WeatherInfo tmp:infos) {Toast.makeText(this, tmp.getId() + " " + tmp.getName()+ " " + tmp.getTemp(), Toast.LENGTH_SHORT).show();}}
}

Tony Liu

2017-3-20, Shenzhen

Android XmlPullParser 笔记相关推荐

  1. Android开发笔记(序)写在前面的目录

    知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...

  2. Android开发笔记(一百四十)Word文件的读取与显示

    读取纯文本 现在手机的用途越来越广泛,从原来只有通讯功能的电话,到拍照手机,到上网手机,再到办公手机,可谓是无所不能了.说到办公,除了收发邮件,还有个频繁使用的功能,就是处理word文件.电脑上的of ...

  3. Android开发笔记(六十二)HTTP数据格式的解析

    json解析 android有两种主流的json解析方案,一种是sdk自带的由Google提供的json(包名前缀为org.json),另一种是Alibaba提供的第三方jar包fastjson(包名 ...

  4. Android开发笔记(三十四)Excel文件的读写

    Android中操作Excel文件的场合较少见,主要是一些专业领域导入导出报表时使用,所以处理Excel读写的开源代码也很稀缺.目前读写Excel主要采用开源库jxl,这个是韩国人写的excel操作工 ...

  5. Android开发笔记(序)

    本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...

  6. Android开发笔记(序)写在前面的目录大全

    转自  湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...

  7. Andriod开发之二十:Android开发笔记(序)写在前面的目录

    https://blog.csdn.net/aqi00/article/details/50038385 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教 ...

  8. Android进阶笔记:Messenger源码详解

    Messenger可以理解为一个是用于发送消息的一个类用法也很多,这里主要分析一下再跨进程的情况下Messenger的实现流程与源码分析.相信结合前面两篇关于aidl解析文章能够更好的对aidl有一个 ...

  9. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

最新文章

  1. java 计划日视图,GitHub - sddysz/calendarSchedule: 日程表,仿滴答清单,包含日视图、三日视图、周视图、月视图、列表视图、同步手机系统日程、添加日程...
  2. C++继承时的名字遮蔽(二)
  3. H5+JS实现《Just Do 8》游戏源码分享
  4. ddd 访问权限_基于DDD的微服务设计和开发实战
  5. 建议收藏!数据中台行业发展概况及展望
  6. 操作系统设计与实现 读笔(2)
  7. BCGSoft Demo示例展示:对话框示例
  8. 【小项目】Vue 整合 Axios
  9. BFS广度优先算法, DFS深度优先算法,Python,队列实现,栈实现
  10. MSCRM plicklist 级联JS
  11. 分库分表中间件常见方案对比分析
  12. python xlrd 写入已有的excel并保留原excel格式
  13. 指数历史估值源码分享,寻找最佳底部机会!
  14. 为什么年轻人会活的越来越难?
  15. 论文阅读八:SDN 交换机转发规则 TCAM 存储优化综述
  16. 【UOJ455】【UER #8】雪灾与外卖
  17. 湖北武汉劳务员培训劳务管理五条新举措建筑七大员培训
  18. 【转】期刊投稿信和催稿信
  19. 招投标舞弊的22种方式及案例
  20. 辽河十八汊最牛X男爷们

热门文章

  1. JQuery判断radio是否选中并获取选中值的示例代码
  2. vim 之cscope的使用
  3. 菜鸟的学习之路(12) —HashSet类详解
  4. java线程同步(synchronized,wait,notify,notifyAll)
  5. Android 实现静默安装
  6. Ora-01008错误:oracle 并非所有变量都已绑定的原因
  7. 项目 11 部署与运行
  8. 第三章 Python丰富的数据类型
  9. php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
  10. Linux curl命令简介