解析XML文件是非常常用的功能,在Android客户端中,经常与服务器通信都需要xml文件的支持,我们这里介绍一个
简单的xml文件的解析,就是使用android中的pull方法进行解析。在java中,有dom解析和sax解析,这个pull解析有些类
似于sax解析,他也是一行一行的读取然后解析内容的方法.
首先看一下这个简单的xml文件
<?xml version="1.0" encoding="utf-8"?>
<infos>
<city id="1">
<temp>-1℃/5℃</temp>
<weather>多云</weather>
<wind>南风3-4级</wind>
<name>上海</name>
<pm>200</pm>
</city>
<city id="2">
<temp>-1℃/5℃</temp>
<weather>多云</weather>
<wind>南风3-4级</wind>
<name>北京7-8</name>
<pm>800</pm>
</city>
<city id="3">
<temp>-7℃/5℃</temp>
<weather>多云</weather>
<wind>南风3-4级</wind>
<name>哈尔滨</name>
<pm>100</pm>
</city>
</infos>
然后我们直接解析这个xml文件,在textview中显示一下
这里是代码,首先是业务Bean
package com.bird.weather;
public class WeatherBean {
private int id;
private String name;
private String wind;
private String weather;
private String temp;
private String pm;
@Override
public String toString() {
return "WeatherBean [id=" + id + ", name=" + name + ", wind=" + wind
+ ", weather=" + weather + ", temp=" + temp + ", pm=" + pm
+ "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWind() {
return wind;
}
public void setWind(String wind) {
this.wind = wind;
}
public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getPm() {
return pm;
}
public void setPm(String pm) {
this.pm = pm;
}
}
然后是解析xml文件的主要代码
package com.bird.weather;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
public class ParseXml {
public static List<WeatherBean> parse(InputStream is) {
List<WeatherBean> list = null;
WeatherBean bean = null;
try {
XmlPullParser parser = Xml.newPullParser();
// 初始化解析器
parser.setInput(is, "utf-8");
int type = parser.next();
while (type != XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_TAG:
if ("infos".equals(parser.getName())) {
list = new ArrayList<WeatherBean>();
} else if ("city".equals(parser.getName())) {
bean = new WeatherBean();
bean.setId(Integer.valueOf(parser.getAttributeValue(0)));
} else if ("temp".equals(parser.getName())) {
String temp = parser.nextText();
bean.setTemp(temp);
} else if ("weather".equals(parser.getName())) {
String weather = parser.nextText();
bean.setWeather(weather);
} else if ("wind".equals(parser.getName())) {
String wind = parser.nextText();
bean.setWind(wind);
} else if ("name".equals(parser.getName())) {
String name = parser.nextText();
bean.setName(name);
} else if ("pm".equals(parser.getName())) {
String pm = parser.nextText();
bean.setPm(pm);
}
break;
case XmlPullParser.END_TAG:
if ("city".equals(parser.getName())) {
// 一个城市的信息处理完毕
list.add(bean);
bean = null;
}
break;
}
type = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
最后在mainactivity中使用这个代码,使用类加载器完成这个简单的功能
package com.bird.weather;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
List<WeatherBean> list = ParseXml.parse(MainActivity.class.getClassLoader().getResourceAsStream("test.xml"));
StringBuffer sb = new StringBuffer();
for(WeatherBean bean : list){
String str = bean.toString();
sb.append(str);
sb.append("\n");
}
tv.setText(sb.toString());
}
}
这样看来,解析xml文件还是非常简单的
分享到:
相关推荐
在android中使用pull解析xml文件
在android平台下使用PULL解析XML源码。
Android ReadXmlByPull 使用Pull解析Xml文件.rar
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
Android网络编程之Pull解析XML文件~
在Android中,使用SAX和PULL解析XML,本项目中以解析天气预报为例。 详情见博客:http://blog.csdn.net/yalin18/article/details/7437752
Android ReadXmlByPull 使用Pull解析Xml文件.zip
Android ReadXmlByPull 使用Pull解析Xml文件.zip项目安卓应用源码下载Android ReadXmlByPull 使用Pull解析Xml文件.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
pull解析xml文件
android xml pull解析示例,自己mark下,备忘
XML在Android中是非常常见用来保存数据的文件,解析的方法也很多,如:DOM、SAX、PULL,其中PULL是Android自带的解析XML方法
Android 生成和PULL解析xml,生成的例子和PULL解析的例子,很详细。。
分别实现了android 最常用的SAX和PULL解析方式,并附有详尽分析
使用Android自带的XML解析器PULL解析器简单的解析xml,并将内容显示在TestView上,代码简化过。
通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一个解析速度快并且占用内存少的...
在Android平台上基于Pull方式对XML文件进行解析