Android上实现一个简单的天气预报APP(五) 解析XML
来源:互联网 发布:淘宝数据统计软件 编辑:程序博客网 时间:2024/05/14 22:00
学习参考资源:https://www.gitbook.com/book/zhangqx/mini-weather/details
前面我们设置好了基本的屏幕布局、通过url获取到了网络中的天气预报数据,接下来我们要将这个XML格式的天气数据解析开来。
通过xmlPullParser解析xml数据
1.待解析的xml格式数据
2.根据标签值,获取标签数据
因为我们这个网页中fengli、fengxiang等标签出现了不止一次,因此我们设置了计数器以便只打印第一次
parseXML(String)函数如下:
private void parseXML(String xmlData) { int fengliCount = 0; int fengxiangCount = 0; int dateCount = 0; int highCount = 0; int lowCount = 0; int typeCount = 0; try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = factory.newPullParser(); xmlPullParser.setInput(new StringReader(xmlData)); int eventType = xmlPullParser.getEventType(); Log.d("MWeater","start parse xml"); while(eventType!=xmlPullParser.END_DOCUMENT) { switch (eventType) { //文档开始位置 case XmlPullParser.START_DOCUMENT: Log.d("parse","start doc"); break; //标签元素开始位置 case XmlPullParser.START_TAG: if(xmlPullParser.getName().equals("city")) { eventType=xmlPullParser.next(); Log.d("city",xmlPullParser.getText()); }else if(xmlPullParser.getName().equals("updatetime")) { eventType=xmlPullParser.next(); Log.d("updatetime",xmlPullParser.getText()); }else if(xmlPullParser.getName().equals("wendu")) { eventType=xmlPullParser.next(); Log.d("wendu",xmlPullParser.getText()); }else if(xmlPullParser.getName().equals("fengli") && fengliCount==0 ) { eventType=xmlPullParser.next(); Log.d("fengli",xmlPullParser.getText()); fengliCount++; }else if(xmlPullParser.getName().equals("shidu")) { eventType=xmlPullParser.next(); Log.d("shidu",xmlPullParser.getText()); }else if(xmlPullParser.getName().equals("fengxiang") && fengxiangCount== 0) { eventType=xmlPullParser.next(); Log.d("fengxiang",xmlPullParser.getText()); fengxiangCount++; }else if(xmlPullParser.getName().equals("pm25")) { eventType=xmlPullParser.next(); Log.d("pm25",xmlPullParser.getText()); }else if(xmlPullParser.getName().equals("quality")) { eventType=xmlPullParser.next(); Log.d("quelity",xmlPullParser.getText()); }else if(xmlPullParser.getName().equals("date") && dateCount==0 ) { eventType=xmlPullParser.next(); Log.d("date",xmlPullParser.getText()); dateCount++; }else if(xmlPullParser.getName().equals("high") && highCount==0 ) { eventType=xmlPullParser.next(); Log.d("high",xmlPullParser.getText()); highCount++; }else if(xmlPullParser.getName().equals("low") && lowCount==0 ) { eventType=xmlPullParser.next(); Log.d("low",xmlPullParser.getText()); lowCount++; }else if(xmlPullParser.getName().equals("type") && typeCount==0 ) { eventType=xmlPullParser.next(); Log.d("type",xmlPullParser.getText()); typeCount++; } break; case XmlPullParser.END_TAG: break; } eventType=xmlPullParser.next(); } }catch (Exception e) { e.printStackTrace(); } }
3.在获取网页数据之后,调用这个函数
运行一下!
0 0
- Android上实现一个简单的天气预报APP(五) 解析XML
- Android上实现一个简单的天气预报APP(一) 设计
- Android上实现一个简单的天气预报APP(十五) 发布天气预报APP
- Android上实现一个简单的天气预报APP(十二) 未来三天的天气预报
- Android上实现一个简单的天气预报APP(十一) Preference存储最近一次查询的城市
- Android上实现一个简单的天气预报APP(二) 配置布局
- Android上实现一个简单的天气预报APP(三) 获取网络数据
- Android上实现一个简单的天气预报APP(四) 添加按钮点击响应
- Android上实现一个简单的天气预报APP(六) 更新界面数据
- Android上实现一个简单的天气预报APP(八) 从数据库读取城市数据
- Android上实现一个简单的天气预报APP(十) 城市列表搜索框
- Android上实现一个简单的天气预报APP(十三) 导航ViewPager
- Android上实现一个简单的天气预报APP(十四) 使用百度API定位城市
- Android上实现一个简单的天气预报APP(七) 切换到新的界面(选择城市界面)
- Android上实现一个简单的天气预报APP(九) ListView展示城市列表、单击更新天气数据
- android很简单的天气预报例子和XML解析
- 简单的天气预报app
- 简单的天气预报 (五)
- 关于HTML5如何自定义属性
- 在JSP中使用FCKeditor_汇总
- 单点登录原理与简单实现
- 数据通信中,奇偶校验原理
- 自定义View之Layout浅析
- Android上实现一个简单的天气预报APP(五) 解析XML
- Oracle的表
- PX、DP单位转换工具类
- sublime Text 正则替换
- FckEditor for java 2.4的JSP 配备方法详解
- 获取二值图像上部边缘
- SQL Server 存储过程
- 几何画板怎么去除画出的线段
- COM技术内幕--包容和聚合