Pull解析例子

来源:互联网 发布:上海晓通网络 编辑:程序博客网 时间:2024/05/22 05:09

类:

public class WeatherInfo {


private String id;
private String wind;
private String pm;
private String temp;
private String name;


public String getId() {
return id;
}


public void setId(String id) {
this.id = id;
}


public String getWind() {
return wind;
}


public void setWind(String wind) {
this.wind = wind;
}


public String getPm() {
return pm;
}


public void setPm(String pm) {
this.pm = pm;
}


public String getTemp() {
return temp;
}


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


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


}


解析器:


public class Parser {


public static WeatherInfo getPullParser(InputStream is) {


// 读取xml文件时,实例化pullparser
XmlPullParser parser = Xml.newPullParser();
// 实体类,搞出来
WeatherInfo weatherinfo = null;


try {
// 初始化parser
parser.setInput(is, "utf-8");
// 获取事件的类型
int type = parser.getEventType();


// 如果指针不指向文本的结尾,就循环


while (type != XmlPullParser.END_DOCUMENT) {


// 如果类型是开始节点,做一个判断了
if (type == XmlPullParser.START_TAG) {

// 事件的名称如果和我想要的这个节点名一样。
// 把里面的内容解析出来
// 解析到了weather节点下。
if ("weather".equals(parser.getName())) {


// 初始化实体类
weatherinfo = new WeatherInfo();
// 如果解析到city节点下
} else if ("city".equals(parser.getName())) {
// 获取节点下的属性
String id = parser.getAttributeValue(0);
// 用实体类把值添加进去
weatherinfo.setId(id);


// 如果解析到name节点
} else if ("name".equals(parser.getName())) {
// 获取name节点下一个文本
String name = parser.nextText();
// 把获取到的内容添加到实体类中
weatherinfo.setName(name);


} else if ("pm".equals(parser.getName())) {
String pm = parser.nextText();
weatherinfo.setPm(pm);


} else if ("wind".equals(parser.getName())) {
String wind = parser.nextText();
weatherinfo.setWind(wind);


} else if ("temp".equals(parser.getName())) {
String temp = parser.nextText();
weatherinfo.setTemp(temp);


}


}


type = parser.next();


}


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return weatherinfo;


}


}


xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>




<weather>
<city id="1">
<name>北京</name>
<pm>1000000</pm>
<wind>8</wind>
<temp>14-21</temp>
</city>
</weather>




方法调用:

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


// 解析文件的点击事件
public void parse(View v) {
//通过类加载器的方式,获取到输入流

InputStream is = MainActivity.class.getClassLoader().getResourceAsStream("weathers.xml");

//实例化出天气信息
WeatherInfo weatherInfo =Parser.getPullParser(is);

//打印出天气信息
Toast.makeText(this,
"城市ID:" + weatherInfo.getId() + "城市PM" + weatherInfo.getPm(), 1)
.show();


}


}







0 0
原创粉丝点击