pull解析xml文件
2015-09-20 16:04
316 查看
模拟从网站获取天气预报解析
模拟一份天气的xml文件,保存的时候需要选定编码,winds默认是gbk编码,解析的时候传入的码表要对应
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <weather> <city> <name>上海</name> <temp>5°</temp> <pm>80</pm> </city> <city> <name>北京</name> <temp>-5°</temp> <pm>800</pm> </city> <city> <name>西安</name> <temp>12°</temp> <pm>60</pm> </city> </weather>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="解析天气信息" android:onClick="click" />
package com.itheima.pullparser; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import com.itheima.pullparser.domain.City; import android.os.Bundle; import android.app.Activity; import android.util.Xml; import android.view.Menu; import android.view.View; 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){ //获取到src文件夹下的资源文件 InputStream is = getClassLoader().getResourceAsStream("weather.xml"); //拿到pull解析器对象 XmlPullParser xp = Xml.newPullParser(); //初始化 try { //告知文件路径,利用gbk解析 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的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) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.itheima.pullparser.domain; 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; } @Override public String toString() { return "City [name=" + name + ", temp=" + temp + ", pm=" + pm + "]"; } }
相关文章推荐
- pull解析xml文件
- Comparable和Comparator的联系和区别
- CompletionService
- Android 动画之三 Property Animation—— 属性(Property)动画 【Animator提供基类】
- Codeforces 475C Kamal-ol-molk's Painting 模拟
- 剑指offer--整数中1出现的次数(从1到n整数中1出现的次数)
- 隐私泄露杀手锏 —— Flash 权限反射
- win32 线程知识点梳理四
- 指向常量的指针与常量指针的异同
- 关于Cypress公司USB芯片FX2的固件开发
- Can not perform this action after onSaveInstanceState
- 软工第一次文档总结
- MapReduce案例学习(3) 求每个部门最早进入公司的员工姓名
- 关于判断字符串长度的方法
- 关于java内部类访问类的静态成员变量
- HDU-5461 Largest Point
- 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
- 浅谈搜索引擎优化方法
- js事件知识整理
- 质量的定位没做好,怎么做都是错