android_14_XmlPullParser解析XML文件
来源:互联网 发布:绝世唐门进阶数据 编辑:程序博客网 时间:2024/06/05 12:46
效果:
XML文件(位于Src目录,即Main Bundle):
<?xml version='1.0' encoding='utf-8' standalone='yes' ?><weather><city><name>杭州</name><temp>8度</temp><pm>250</pm></city><city><name>厦门</name><temp>18度</temp><pm>25</pm></city><city><name>昆明</name><temp>15度</temp><pm>35</pm></city></weather>
City模型:
package com.sg31.xmlpullparser;public class City {// 城市名private String name;// 温度private String temp;// pm2.5或者pm10private 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 + "]";}}
代码:
package com.sg31.xmlpullparser;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.util.Xml;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends ActionBarActivity {List<City> cityList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pullParserToHandleWithXML(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } // 使用XmlPullParser解析XML文件 public void pullParserToHandleWithXML(){ //获取到src文件夹下的资源文件(File In Main Bundle) InputStream is = getClassLoader().getResourceAsStream("weather.xml"); //拿到pull解析器对象 XmlPullParser xp = Xml.newPullParser(); //初始化 try { xp.setInput(is, "utf-8"); // 核心思想:获取当前节点的 事件类型,通过 事件类型 的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作 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的javabean cityList = 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) { e.printStackTrace(); } }}
1 0
- android_14_XmlPullParser解析XML文件
- XML----SAX解析XML文件
- XML---DOM4J解析XML文件
- XML DOM解析XML文件
- XML SAX解析xml文件
- XML jDOM解析XML文件
- XML DOM4J解析XML文件
- 解析XML文件___SAX解析
- java 解析 xml文件
- XML文件解析
- XML文件解析
- JstL解析XML文件
- xml文件解析办法
- DOM解析XML文件
- XML文件解析心得
- xml文件解析-SAX
- xml文件解析-DOM
- xml文件解析-JDOM
- Retrofit用法详解
- maven获取远程仓库中的包,下载到本地仓库
- TOSCA简介
- 图片滑动验证Demo
- Fragment的使用分析
- android_14_XmlPullParser解析XML文件
- android 不自动focus EditText
- HttpServletRequestWrapper 实现xss注入
- 23种设计模式(8):观察者模式
- Vitamio
- 43-打通你的任督二脉-信号处理函数的执行期
- Android热修复技术选型——三大流派解析
- Android 软键盘弹出导致布局被挤到上边
- Oracle