1.首先附上要解析的xml数据
<?xml version="1.0" encoding="utf-8"?>
<weather>
<city>
<name>西安</name>
<temp>23</temp>
<pm25>40</pm25>
</city>
<city>
<name>郑州</name>
<temp>26</temp>
<pm25>100</pm25>
</city>
<city>
<name>镇巴</name>
<temp>28</temp>
<pm25>800</pm25>
</city>
</weather>
2.根据xml的结果设计JavaBean
package domain;
public class City {
private String name;
private String temp;
private String pm25;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getPm25() {
return pm25;
}
public void setPm25(String pm25) {
this.pm25 = pm25;
}
@Override
public String toString() {
return "City [name=" + name + ", temp=" + temp + ", pm25=" + pm25 + "]";
}
}
3.点击按钮开始解析
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import domain.City;
public class MainActivity extends Activity {
List<City> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
//获取天气xml文件
InputStream is = getClassLoader().getResourceAsStream("weather.xml");
//获取xml解析器
XmlPullParser parser = Xml.newPullParser();
try{
//初始化
parser.setInput(is, "UTF-8");
//获取当前节点的事件类型
int type = parser.getEventType();
City city = null;
//不到文档结束就一直解析
while(type != XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_TAG:
//获取当前节点的名称
if("weather".equals(parser.getName())){
list = new ArrayList<City>();
}else if("city".equals(parser.getName())){
city = new City();
}else if("name".equals(parser.getName())){
//获取下一个节点的文本,而且把指针移动到当前节点的结束节点
city.setName(parser.nextText());
}else if("temp".equals(parser.getName())){
city.setTemp(parser.nextText());
}else if("pm25".equals(parser.getName())){
city.setPm25(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if("city".equals(parser.getName())){
list.add(city);
}
break;
}
type = parser.next();
}
}catch(Exception e){
e.printStackTrace();
}
//输出数据
for (City city : list) {
System.out.println(city.toString());
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/4502.html