本文共 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 ListgetXml(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(); Listxmlinfos; 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,如需转载请自行联系原作者