设为首页 加入收藏

TOP

Android 中使用Pull解析XML文件(一)
2014-11-23 21:26:31 来源: 作者: 【 】 浏览:41
Tags:Android 使用 Pull 解析 XML 文件

首先看一下这个简单的xml文件


< xml version="1.0" encoding="utf-8" >




-1℃/5℃
多云
南风3-4级
上海
200



-1℃/5℃
多云
南风3-4级
北京7-8
800




-7℃/5℃
多云
南风3-4级
哈尔滨
100



然后我们直接解析这个xml文件,在textview中显示一下


这里是代码,首先是业务Bean


package com.linuxidc.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.linuxidc.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 parse(InputStream is) {
List 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();
} else if ("city".equals(parser.getName())) {
bean = new WeatherBean();
bean.setId(Integer.valueOf(parser.getAttributeva lue(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.linuxidc.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 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.toSt

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java 多线程之-----守护进程 下一篇Java 9 – 终极特性列表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: