博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android -- 解析xml
阅读量:5954 次
发布时间:2019-06-19

本文共 2910 字,大约阅读时间需要 9 分钟。

简单布局                                                                                     

信息类                                                                                        

private int wendu;private int wind;private String type;private int id;@Overridepublic String toString() {  return "天气信息 [温度=" + wendu + ", 风力=" + wind + "级 , 天气状况=" + type                + ", 未来第=" + id + "天]";    }

四个变量,然后有分别set和get。toString函数分别显示出这四个变量出来。

解析xml函数                                                                          

public class XmlReader {    public static List
getXml(InputStream is) throws Exception { // 获得xml解析器 XmlPullParser parser = Xml.newPullParser(); // 初始化解析器 parser.setInput(is, "utf-8"); // 解析xml int eventType = parser.getEventType();// 第一次被调用的时候 定位在xml开头 List
xmlInfos = null; XmlInfo xmlInfo = null; while (eventType != XmlPullParser.END_DOCUMENT) {
//需要不停的让解析器解析下一条 switch (eventType) { case XmlPullParser.START_TAG: if("weather".equals(parser.getName())) { // 发现开始节点 为weather 创建集合 xmlInfos = new ArrayList
(); } else if ("day".equals(parser.getName())) { // 发现一个新的日期 对应的天气 xmlInfo = new XmlInfo(); String id = parser.getAttributeValue(0); xmlInfo.setId(Integer.parseInt(id)); } else if ("wendu".equals(parser.getName())) { String wendu = parser.nextText(); xmlInfo.setWendu(Integer.parseInt(wendu)); } else if ("wind".equals(parser.getName())) { String wind = parser.nextText(); xmlInfo.setWind(Integer.parseInt(wind)); } else if ("type".equals(parser.getName())) { String type = parser.nextText(); xmlInfo.setType(type); } break; case XmlPullParser.END_TAG: if ("day".equals(parser.getName())) { xmlInfos.add(xmlInfo); } break; default: break; } eventType = parser.next();// 控制解析器 解析下一个节点 } is.close(); return xmlInfos; }}

onCreate中处理                                                                        

TextView tv = (TextView) findViewById(R.id.tv_weather);                StringBuilder sb = new StringBuilder();        List
xmlinfos; try { xmlinfos = XmlReader.getXml(getClassLoader().getResourceAsStream("weather.xml")); for(XmlInfo xmlinfo : xmlinfos) { sb.append(xmlinfo.toString()); sb.append("\n"); } tv.setText(sb.toString()); } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); Toast.makeText(this, "解析信息失败", 0).show(); }

我是天王盖地虎的分割线                                                                

源代码:

Xml解析.zip

本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3789611.html,如需转载请自行联系原作者

你可能感兴趣的文章
Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
查看>>
linux安全问答(1)
查看>>
微软已停止对Vista RTM(SP0)的服务支持
查看>>
Activity 切换 动画
查看>>
[LeetCode] Sum of Left Leaves 左子叶之和
查看>>
[LeetCode] Find Median from Data Stream
查看>>
3.6. Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota
查看>>
50.9. 触发器(Trigger)
查看>>
9.3. where 优化
查看>>
《基于MFC的OpenGL编程》Part 18 Reading objects from the OBJ File Format
查看>>
Spring 文件上传功能
查看>>
RAC静默安装与DG搭建
查看>>
windows 下mysql的安装于使用(启动、关闭)
查看>>
Android 中文 API (28) —— CheckedTextView
查看>>
PHPStorm IDE 快捷键(MAC)
查看>>
反编译代码遇到的问题
查看>>
Android Bitmaps缓存
查看>>
learn go ifelse
查看>>
LINUX中常用操作命令
查看>>
SpringBoot配置属性之Server
查看>>