android采用pull解析xml文件

pull解析:
MainActivity中:
public void click(View v){
//获取到src文件夹下的资源文件
InputStream inputStream= getClassLoader().getResourceAsStream("weather.xml");
//拿到pull解析器对象
XmlPullParser pullParser=Xml.newPullParser();//不能直接new出来
//初始化
try {
pullParser.setInput(inputStream, "utf-8");
//获取到当前结点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么类型的结点
//0:START_DOCUMENT 1:END_DOCUMENT 2:START_TAG 3:END_TAG
int type=pullParser.getEventType();
City city = null;
while(type!=XmlPullParser.END_DOCUMENT){
//根据节点的类型,要做不同的操作
switch (type) {
case XmlPullParser.START_TAG:  //开始标签
if("weather".equals(pullParser.getName())){
//创建city集合对象,用于存放city的javabean
cityList=new ArrayList<City>();
}else if("city".equals(pullParser.getName())){
//创建city的javabean对象
city=new City();
}else if("name".equals(pullParser.getName())){
String name = null;
try {
name = pullParser.nextText();//获取当前节点的下一个节点(document节点)的文本
} catch (IOException e) {

e.printStackTrace();
}
city.setName(name);
}else if("temp".equals(pullParser.getName())){
String temp = null;
try {
temp = pullParser.nextText();//获取当前节点的下一个节点(document节点)的文本
} catch (IOException e) {

e.printStackTrace();
}
city.setName(temp);
}else if("pm".equals(pullParser.getName())){
String pm = null;
try {
pm = pullParser.nextText();//获取当前节点的下一个节点(document节点)的文本
} catch (IOException e) {

e.printStackTrace();
}
city.setName(pm);
}

break;
case XmlPullParser.END_TAG:
if("city".equals(pullParser.getName())){
//把city的javabean放入集合中
cityList.add(city);
}
break;
}
//把指针移动到下一个节点,并返回该节点的事件类型
try {
type=pullParser.next();//把指针移动到下一个节点,并返回该节点的事件类型
} catch (IOException e) {

e.printStackTrace();
}
for(City c:cityList){
System.out.println(c.toString());
}
}
} catch (XmlPullParserException e) {

e.printStackTrace();
}
}
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<weather>
<city>
<name>上海</name>
<temp>5°</temp>
<pm>80</pm>
</city>

<city>
<name>北京</name>
<temp>5°</temp>
<pm>80</pm>
</city>

<city>
<name>深圳</name>
<temp>5°</temp>
<pm>80</pm>
</city>
</weather>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值