zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C#基础知识委托与泛型(转载)
    C.消息队列(转载)
    可编辑的 HTML JavaScript 表格控件 DataGrid
    Asp无组件上传进度条解决方案
    A lot of Javascript tips
    资料只看看,不能copy/paste。
    Converting Numbers to Strings
    浅析Google技术底蕴
    ASP.NET makes uploading files from the client to the server a snap(UploadInterface.PostedFile.SaveAs)
    IT IS an IMPORTANT String for Input TYPE=File Field enctype="multipart/formdata"
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3789611.html
Copyright © 2011-2022 走看看