Android基础--XML解析(XmlPullParser )
1.要解析的xml文件如下
<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?> <weather> <city> <name>深圳</name> <temp>18°</temp> <pm25>30</pm25> </city> <city> <name>上海</name> <temp>13°</temp> <pm25>25</pm25> </city> <city> <name>北京</name> <temp>6°</temp> <pm25>800</pm25> </city> </weather>
2.每个City节点对应的JavaBean如下:
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; } public City(String name, String temp, String pm25) { super(); this.name = name; this.temp = temp; this.pm25 = pm25; } public City() { super(); } @Override public String toString() { return "City [name=" + name + ", temp=" + temp + ", pm25=" + pm25 + "]"; } }
3.进行解析的MainActivity.java如下:
public class MainActivity extends Activity { List<City> cityList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View v){ //解析xml文件 //1. 拿到资源文件 InputStream is = getClassLoader().getResourceAsStream("weather.xml"); //2. 拿到解析器对象 XmlPullParser xp = Xml.newPullParser(); try { //3. 初始化xp对象 xp.setInput(is, "gbk");//根据文件保存的编码决定 //4.开始解析 //获取当前节点的事件类型 int type = xp.getEventType(); City city = null; while(type != XmlPullParser.END_DOCUMENT){ //判断当前解析到哪一个节点,从而确定你要做什么操作 switch (type) { case XmlPullParser.START_TAG: // 获取当前节点的名字 if("weather".equals(xp.getName())){ cityList = new ArrayList<City>(); } else if("city".equals(xp.getName())){ 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("pm25".equals(xp.getName())){ // 获取当前节点的下一个节点的文本,把指针移动到当前节点的结束节点 String pm25 = xp.nextText(); city.setPm25(pm25); } break; case XmlPullParser.END_TAG: if("city".equals(xp.getName())){ cityList.add(city); } break; } //把指针移动到下一个节点 type = xp.next(); } for (City c : cityList) { System.out.println(c.toString()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。