Android学习笔记4--XmlPullParser的使用

xml文件的解析器XmlPullParser的使用,解析一个xml文件
1.获取解析器对象
2.设置解析器的参数
3.获取解析的事件类型
4.判断事件类型进行解析的逻辑

public static List<Channel> parserXml(InputStream in) throws Exception{

        //[0]声明集合对象 
         List<Channel> weatherLists = null;
         Channel  channel = null;
        //[1]获取XmlPullParser 解析的实例 
        XmlPullParser parser = Xml.newPullParser();

        //[2]设置XmlPullParser 的参数 
        parser.setInput(in, "utf-8");

        //[3]获取事件类型
        int type = parser.getEventType();
        while(type!= XmlPullParser.END_DOCUMENT){

            switch (type) {
            case XmlPullParser.START_TAG:   //解析开始标签
                //[4]具体判断一下 解析到是哪个开始标志
                if ("weather".equals(parser.getName())) {
                    //[5]创建一个集合对象
                    weatherLists = new ArrayList<Channel>();

                }else if("channel".equals(parser.getName())){
                    //[6]创建Channel对象
                    channel = new Channel();
                    //[7]获取id值 
                    String id = parser.getAttributeValue(0);
                    channel.setId(id);

                }else if("city".equals(parser.getName())){
                    //[8]获取city的数据 
                    String city = parser.nextText();
                    channel.setCity(city);

                }else if("temp".equals(parser.getName())){
                    //[8]获取city的数据 
                    String temp = parser.nextText();
                    channel.setTemp(temp);


                }else if("wind".equals(parser.getName())){
                    //[8]获取city的数据 
                    String wind = parser.nextText();
                    channel.setWind(wind);

                }else if("pm250".equals(parser.getName())){
                    //[8]获取city的数据 
                    String pm250 = parser.nextText();
                    channel.setPm250(pm250);
                }

                break;

            case XmlPullParser.END_TAG:     //解析结束标志 
                //判断要解析的结束标签 
                if ("channel".equals(parser.getName())) {
                    //把javabean对象存到集合中 
                    weatherLists.add(channel);

                }

                break;
            }

            //不停的向下解析
            type = parser.next();


        }

        return weatherLists;

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值