Android-使用pull解析xml文件

来源:互联网 发布:it培训机构知乎 编辑:程序博客网 时间:2024/04/29 05:56

xml中的布局只有一个button,用于触发事件故不给出代码;


需要解析的文件:

weather.xml

<?xml version='1.0' encoding='utf-8' standalone='yes' ?><weather><city><name>nanchang</name><temp>33</temp><pm>80</pm></city><city><name>beijing</name><temp>22</temp><pm>800</pm></city><city><name>shanghai</name><temp>12</temp><pm>60</pm></city></weather>


City.java

package com.example.cn;public class City {private String name;private String temp;private String pm;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 getPm() {return pm;}public void setPm(String pm) {this.pm = pm;}@Overridepublic String toString() {return "City [name=" + name + ", temp=" + temp + ", pm=" + pm + "]";}}

MainActivity.java

package com.example.pull_xml;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 com.example.cn.City;public class MainActivity extends Activity {List<City> cityList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){//获取到src文件夹下的资源文件InputStream is = getClassLoader().getResourceAsStream("weather.xml");//拿到pull解析器对象XmlPullParser xp = Xml.newPullParser();//初始化try {xp.setInput(is, "gbk");//获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作int type = xp.getEventType();City city = null;while(type != XmlPullParser.END_DOCUMENT){//根据节点的类型,要做不同的操作switch (type) {case XmlPullParser.START_TAG://获取当前节点的名字if("weather".equals(xp.getName())){//创建city集合对象,用于存放city的javabeancityList = new ArrayList<City>();}else if("city".equals(xp.getName())){//创建city的javabean对象city = new City();}else if("name".equals(xp.getName())){//获取当前节点的下一个节点的文本String name = xp.nextText();city.setName(name);}else if("temp".equals(xp.getName())){//获取当前节点的下一个节点的文本String temp = xp.nextText();city.setTemp(temp);}else if("pm".equals(xp.getName())){//获取当前节点的下一个节点的文本String pm = xp.nextText();city.setPm(pm);}break;case XmlPullParser.END_TAG:if("city".equals(xp.getName())){//把city的javabean放入集合中cityList.add(city);}break;}//把指针移动到下一个节点,并返回该节点的事件类型type = xp.next();}for (City c : cityList) {System.out.println(c.toString());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


生成的结果:



0 0
原创粉丝点击