利用类下载器解析Xml文件
要解析的xml文件
<?xml version="1.0" encoding="utf-8"?>
<info>
<city name="北京">
<temp>18度</temp>
<sun>晴</sun>
</city>
<city name="杭州">
<temp>26度</temp>
<sun>雨夹雪</sun>
</city>

<city name="武汉">
<temp>46°C</temp>
<sun>下雪</sun>
</city>
</info>
首先建一个Info实体类,其属性与Info.xml节点对应
public class Info {
private String city;
private String sun;
private String temp;

public String getSun() {
return sun;
}

@Override
public String toString() {
return "Info [getSun()=" + getSun() + ", getTemp()=" + getTemp()
+ ", getCity()=" + getCity() + "]";
}

public void setSun(String sun) {
this.sun = sun;
}

public String getTemp() {
return temp;
}

public void setTemp(String temp) {
this.temp = temp;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}
}
创建一个解析文件的方法供调用
public static List<Info> GetInfoList(InputStream inputStream) throws Exception{
List<Info> listInfo =null;
Info info =null;
XmlPullParser xmlParser =Xml.newPullParser();
xmlParser.setInput(inputStream,"utf-8");
int type =xmlParser.getEventType();//获取解析器解析的事件类型
while(type!=xmlParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_TAG://标签或者节点开始时候的事件
if("info".equals(xmlParser.getName())){
//初始化 天气信息集合
listInfo = new ArrayList<Info>();
}
else if("city".equals(xmlParser.getName())){
info = new Info();
String city = xmlParser.getAttributeValue(0);
info.setCity(city);
}
else if("temp".equals(xmlParser.getName())){
String temp = xmlParser.nextText();
info.setTemp(temp);
}
else if("sun".equals(xmlParser.getName())){
String sun = xmlParser.nextText();
info.setSun(sun);
}
break;
case XmlPullParser.END_TAG:
if("city".equals(xmlParser.getName())){ //发现已经解析完毕一个城市信息
listInfo.add(info);
info = null;
}
break;
}
type = xmlParser.next();//让解析器 解析下一个节点tag
}
return listInfo;
}
最后,调用这个方法解析文件并返回
TextView txtViewWeather=(TextView) findViewById(R.id.txtViewWeather);
InputStream inputStream =getClassLoader().getResourceAsStream("info.xml");
try {
List<Info> listInfo=WeatherService.GetInfoList(inputStream);
StringBuilder sb=new StringBuilder();
for(Info item:listInfo){
sb.append(item.toString());
}
txtViewWeather.setText(sb.toString());
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
Toast.makeText(this, "解析异常啦,哈哈哈!", Toast.LENGTH_LONG).show();
}

Android之xml解析的更多相关文章

  1. Android实现XML解析技术

    转载:Android实现XML解析技术 本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为 ...

  2. Android 简易XML解析

    首先创建在Android工程中创建一个Assets文件夹 app/src/main/assets 在这里添加一个名为 data.xml的文件,然后编辑这个文件,加入如下XML格式内容 <?xml ...

  3. Android中XML解析

    package com.example.thebroadproject; public class Book { private int id; private String name; privat ...

  4. Android项目--XML解析

    对于xml文件,一般有两种解析方式: -----pull解析-------- -----Sax解析------- 如果xml文件是本地文件,那么就好说了 AssetManager assetManag ...

  5. Android 之xml解析

    HTTP网络传输中的数据组织方式有三种方式:1.HTML方式2.XML方式 3.JSON方式 XML称为可扩展标记语言,它与HTML一样,都是SGML(标准通用标记语言) XML是Internet环境 ...

  6. Android,XML解析

    XML解析三种方式 DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树.检索所需的数据: 简单直观,但需要将文档读取到内存,并不太适合移动设备: SAX ...

  7. Android中XML解析-Dom解析

    Android中需要解析服务器端传过来的数据,由于XML是与平台无关的特性,被广泛运用于数据通信中,有的时候需要解析xml数据,格式有三种方式,分别是DOM.SAX以及PULL三种方式,本文就简单以D ...

  8. Android中XML解析-SAX解析

    昨天由于时间比较匆忙只写了Android中的XML解析的Dom方式,这种方式比较方便,很容易理解,最大的不足就是内容多的时候,会消耗内存.SAX(Simple API for XML)是一个解析速度快 ...

  9. Android中XML解析-PULL解析

    前面写了两篇XML解析的Dom和SAX方式,Dom比较符合思维方式,SAX事件驱动注重效率,除了这两种方式以外也可以使用Android内置的Pull解析器解析XML文件. Pull解析器的运行方式与 ...

  10. Android中XML解析,保存的三种方法

    简单介绍 在Android开发中,关于XML解析有三种方式,各自是: SAX 基于事件的解析器.解析速度快.占用内存少.非常适合在Android移动设备中使用. DOM 在内存中以树形结构存放,因此检 ...

随机推荐

  1. Go http server 高并发

    先来个段子:[并发处理连接数] 多高? 很高! 到底多高? 没有一亿,都算少了! . . . 然后就没有然后了... “段子 END” 这就是目前中国企业的通病:提个概念,没有答案,最后造成概念也模糊 ...

  2. vue路由(一个包含重定向、嵌套路由、懒加载的main.js如下)and 路由跳转传参的query和params的异同

    import Vue from 'vue'import VueRouter from 'vue-router'import App from './App'Vue.use(VueRouter)cons ...

  3. Could not find result map java.lang.Integer] with root cause

    错误的代码 <select id="selectpGoodsInfoIdByGoodsId" parameterType="java.lang.Integer&qu ...

  4. RabbitMq入门详解

    因为项目中需要用到RabbitMq,所有花时间研究了下,虽然博客园已经有前辈写了关于RabbitMq的文章.但还是有必要研究下! 什么是RabbitMq? 百度解释:MQ全称为Message Queu ...

  5. ####### Scripts Summary #######

    Scripts Summary Version: 1.0.1 issueDate: 2017-11-11 modifiedDate: 2017-11-28 0.configuration 1.oper ...

  6. Lepus(天兔)监控MySQL部署

    http://www.dbarun.com/docs/lepus/install/lnmp/ 注意:xampp mysqldb-python版本太高会导致lepus白屏 apache版本最好选择2.2 ...

  7. MyBatis基础入门《七》查询参数传入对象

    MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持 ...

  8. webpack打包jQuery,jQuery未定义

    怎么来兼容老式jQuery插件 ProvidePlugin + expose-loader / externals 1.ProvidePlugin + expose-loader webpack.co ...

  9. [6]Windows内核情景分析 --APC

    APC:异步过程调用.这是一种常见的技术.前面进程启动的初始过程就是:主线程在内核构造好运行环境后,从KiThreadStartup开始运行,然后调用PspUserThreadStartup,在该线程 ...

  10. Python全栈-异常处理

    一.异常 1.异常的定义 异常是错误发生的信号,程序一旦出错就会抛出错误信息,如果不及时处理就会程序就会随之停止运行 异常有三部分组成: 1)异常类型 2)异常追踪 3)异常的值 2.异常的分类 1) ...