• Android -- 解析xml


    简单布局                                                                                     

    <TextView
            android:id="@+id/tv_weather"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
           />

    信息类                                                                                        

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

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

    解析xml函数                                                                          

    public class XmlReader {
        public static List<XmlInfo> getXml(InputStream is) throws Exception {
            // 获得xml解析器
            XmlPullParser parser = Xml.newPullParser();
            // 初始化解析器
            parser.setInput(is, "utf-8");
            // 解析xml
            int eventType = parser.getEventType();// 第一次被调用的时候 定位在xml开头
            List<XmlInfo> 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<XmlInfo>();
                    } 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<XmlInfo> xmlinfos;
            try {
                xmlinfos = XmlReader.getXml(getClassLoader().getResourceAsStream("weather.xml"));
                for(XmlInfo xmlinfo : xmlinfos)
                {
                    sb.append(xmlinfo.toString());
                    sb.append("
    ");
                }
                tv.setText(sb.toString());
            } catch (Exception e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
                Toast.makeText(this, "解析信息失败", 0).show();
            }

    我是天王盖地虎的分割线                                                                

    源代码:http://pan.baidu.com/s/1dD1Qx01

    Xml解析.zip

    转载请注明出处:http://www.cnblogs.com/yydcdut

  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3789611.html
Copyright © 2020-2023  润新知