Android笔记使用Pull解析器读取XML文件
来源:互联网 发布:我的世界0.14.0JS大全 编辑:程序博客网 时间:2024/05/20 05:06
除了可以使用SAX或DOM解析XML文件之外,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE。如果用在javaEE需要把其jar文件放入类路径中,因为Android已经集成进了Pull解析器,所以无需添加任何jar文件。android系统本身使用到的各种xml文件,其内部也是采用Pull解析器进行解析的。Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。
MainActivity.java
public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView tv = (TextView) findViewById(R.id.tv);try {List<WeatherInfo> infos= WeatherService.getWeatherInfos(MainActivity.class.getClassLoader() .getResourceAsStream("weather.xml"));StringBuffer sb=new StringBuffer();for(WeatherInfo info : infos){String str=info.toString();sb.append(str);sb.append("\n");}tv.setText(sb.toString());} catch (Exception e) {e.printStackTrace();Toast.makeText(this, "解析信息失败!", 0).show();}}}WeatherInfo.java
public class WeatherInfo {private int id; private String name; private String wind; private String weather; private String temp; private String pm; @Overridepublic String toString() {return "[城市id=" + id + ", 名称=" + name + ", 风力=" + wind+ ", 天气状况=" + weather + ", 温度=" + temp + ", pm2.5=" + pm+ "]";}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getWind() {return wind;}public void setWind(String wind) {this.wind = wind;}public String getWeather() {return weather;}public void setWeather(String weather) {this.weather = weather;}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;} }
WeatherService.java
public class WeatherService {public static List<WeatherInfo> getWeatherInfos(InputStream is) throws Exception{XmlPullParser parser=Xml.newPullParser();//初始化解析器parser.setInput(is,"utf-8");List<WeatherInfo> weatherInfos=null;WeatherInfo weatherInfo=null;int type= parser.getEventType();while(type!=XmlPullParser.END_DOCUMENT){switch (type) {case XmlPullParser.START_TAG:if("infos".equals(parser.getName())){//解析到全局开始的标签weatherInfos=new ArrayList<WeatherInfo>();}else if("city".equals(parser.getName())){weatherInfo=new WeatherInfo();String idStr= parser.getAttributeValue(0);weatherInfo.setId(Integer.parseInt(idStr));}else if("temp".equals(parser.getName())){String temp=parser.nextText();weatherInfo.setTemp(temp);}else if("weather".equals(parser.getName())){String weather=parser.nextText();weatherInfo.setWeather(weather);}else if("wind".equals(parser.getName())){String wind=parser.nextText();weatherInfo.setWind(wind);}else if("name".equals(parser.getName())){String name=parser.nextText();weatherInfo.setName(name);}else if("pm".equals(parser.getName())){String pm=parser.nextText();weatherInfo.setPm(pm);}break;case XmlPullParser.END_TAG:if("city".equals(parser.getName())){//一个城市的信息处理完毕了。weatherInfos.add(weatherInfo);weatherInfo=null;}break;}type=parser.next();}return weatherInfos;}}
0 0
- Android笔记使用Pull解析器读取XML文件
- android汇总_使用Pull解析器读取XML文件
- Android中使用Pull解析器读取XML文件
- 使用Pull解析器读取XML文件
- 使用pull解析器读取xml文件
- 使用Pull解析器读取XML文件
- 使用Pull解析器读取XML文件
- 使用Pull解析器读取XML文件
- Android笔记使用Pull解析器生成XML文件
- Android学习--使用Pull解析器读取XML文件、将对象写入XML文件
- Android中使用Pull解析器生成XML文件和读取xml文件
- Android学习--使用Pull解析器读取XML文件、将对象写入XML文件
- Android下使用pull解析器生成XML文件、读取XML文件
- android下pull解析器读取和保存xml文件
- Android中运用Pull解析器读取XML文件
- 在android中使用Pull解析器读取xml文件,并进行测试
- Android使用Pull解析器解析XML文件
- Android使用Pull解析器解析XML文件
- ART运行时Java堆创建过程分析
- avcodec_decode_video2()解码视频后丢帧的问题解决
- 读《疯狂的投资》
- Spark技术内幕:Shuffle Read的整体流程
- NET实现微信公共平台上传下载多媒体文件
- Android笔记使用Pull解析器读取XML文件
- C#使用GET、POST请求获取结果
- 总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告
- [总结]RTMP流媒体技术零基础学习方法
- svn更换ip地址后重新连接操作
- Leetcode - Valid Parentheses
- 运动检测及测速GUI
- 自己写一个BAT文件进行系统垃圾的删除
- 在webservice中使用C#发送http请求并获得响应内容