解析Xml——XmlPullParser

    public class ChannelServiceImpl {
    public static List<Channel> getAllWeather(InputStream is){
        List<Channel> cs = null;
        Channel c = null;


        try {
            // 创建解析器
            XmlPullParser parser = Xml.newPullParser();
            // 设置解析器要解析哪个文件及使用的编码
            parser.setInput(is, "UTF-8");
            //得到当前节点标识(START_TAG, END_TAG, TEXT, etc.)
            int type = parser.getEventType();
            // 没有解析到结尾就一直解析
            while(type!=XmlPullParser.END_DOCUMENT){
                //如果标识为开始
                if(type==XmlPullParser.START_TAG){
                    //是weather的话,创建list,以便保存各个城市天气信息
                    if("weather".equals(parser.getName())){
                        cs = new ArrayList<Channel>();
                    }else if("channel".equals(parser.getName())){
                        c = new Channel();
                        c.setId(parser.getAttributeValue(0));
                    }else if("city".equals(parser.getName())){
                        String city = parser.nextText();
                        c.setCity(city);
                    }else if("temp".equals(parser.getName())){
                        String temp = parser.nextText();
                        c.setTemp(temp);
                    }else if("wind".equals(parser.getName())){
                        String wind = parser.getName();
                        c.setWind(wind);
                    }else if("pm250".equals(parser.getName())){
                        String pm250 = parser.getName();
                        c.setPm250(pm250);
                    }
                }
                else if(type==XmlPullParser.END_TAG){
                    if("channel".equals(parser.getName())) {
                        cs.add(c);
                        //将c保存的当前城市信息添加到list,并清空c中信息,以便后用
                        System.out.println(c.toString());
                        c = null;
                    }
                }
                //得到下次event类型,再由while循环判断是否到XML文件结尾的END_DOCUMENT
                type = parser.next();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }               
        return cs;

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值