利用类下载器解析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. [xdoj] 1310 DSKer的卡牌游戏

    http://acm.xidian.edu.cn/problem.php?id=1310 1. 这道题可以类比括号匹配,YY和yy是两组可以匹配的信号,当然要注意逻辑是否正确,一开始进行括号匹配算法的 ...

  2. iOS 设计模式-Block实现代理的逻辑

    在A页面,点击跳转到B页面,B页面操作完,回到A页面,并刷新A页面的内容.典型的例子,就是在一个列表里,点击新增,跳到新增页面,新增完,把数据传回给列表页,并刷新列表页里的内容. 这个,我平时一般是通 ...

  3. iOS UI基础-13.0 数据存储

    应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Lay ...

  4. Response.Redirect & window.location.href

    对接中信的微信H5支付时,对方(其实是微信)需要对我们的域名进行授权,即,我方需向渠道报备支付域名,微信只认可由此域名发起的支付交易. 支付中心只提供了一套支付接口供下游系统访问.因为给渠道报备的域名 ...

  5. EF性能优化

    下面总结了一些在使用EF的过程中应当特别注意的地方,避免大家再走弯路. 1.分清真分页和假分页 大家都知道分页分为真分页和假分页,并且假分页是特别耗费性能的.我们在使用的过程中也是以真分页为主,但是在 ...

  6. Ecust DIV3 k进制 【暴力不断优化】

    K进制 Description 给定一个正整数n,请你判断在哪些进制下n的表示恰好有2位是1,其余位都是0. Input 输入第一行为整数TT,表示有TT组数据(1 \le T \le 50)(1≤T ...

  7. WinSock学习笔记

    Socket(套接字)◆先看定义: typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Socke ...

  8. Vue系列之 => 自定义全局指定让文本框自动获取焦点

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Big Event in HDU (母函数, 玄学AC)

    Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't k ...

  10. hdu5302 构造

    题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连.现在,Demon将图分成两部分,一部分包含所有的黑边,另一部分包括所有的白边,给你白边图中度为0的点的数量w ...