利用类下载器解析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. Tensorflow实现LeNet-5、Saver保存与读取

    一. LeNet-5 LeNet-5是一种用于手写体字符识别的非常高效的卷积神经网络. 卷积神经网络能够很好的利用图像的结构信息. 卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定 ...

  2. 函数 return

    return 的作用 一.返回一个值给函数,主函数调用这个函数后能得到这个返回的值.二.结束函数,例如你运行到一个地方,虽然后面还有代码但是你不想再继续运行,这时就可以直接用 return:这条语句来 ...

  3. iOS 开发常用链接总结

    知识归纳 1.招聘一个靠谱的程序员 面试题答案 https://github.com/ChenYilong/iOSInterviewQuestions 2.中文 iOS/Mac 开发博客列表 http ...

  4. react native 使用TabNavigator编写APP底部导航

    第一步,下载依赖 npm install react-native-tab-navigator --save 第二步,引入 import TabNavigator from 'react-native ...

  5. InstallShield2015制作安装包----------安装后实现自动运行

    安装向导完成后,自动运行. 实现的手段是:InstallScript脚本OnEnd()函数里面,调用可执行程序. 备注:INSTALLDIR预定义变量存放着程序的安装目录. //安装后运行dispat ...

  6. rabbitmq坑点与异常处理

    from:http://www.cnblogs.com/gossip/p/4573056.html 一.None of the specified endpoints were reachable 这 ...

  7. Unity之如何从fbx提取Animation clip文件

    见代码: static void CreateAnim(string fbx, string target) { AnimationClip src = AssetDatabase.LoadAsset ...

  8. QT5 QT4--LNK2019 无法解析的外部符号

    新创建的工程 #include <QtWidgets/QApplication> #include <QtWidgets/QWidget> #include <QtWid ...

  9. web.config 特殊字符转义

    字符 转义码 & 符号 & & 单引号 ' &apos; 双引号 " " 大于 > > 小于 < <

  10. [转] LoadRunner 获取接口请求响应信息

    Action() { int nHttpRetCode; // 默认最大长度为256,get请求需注意缓存问题,需要根据content-length进行修改 web_set_max_html_para ...