Pull解析实例

pull解析是解析xml文件最完美的方式,解决了dom解析和sax解析的问题,是谷歌所推荐的解析xml文件方式,下面的代码是解析本地xml文件:



在Activity中的代码

//pull解析实例

XmlPullParser pull=Xml.newPullParser();

//调用自定义方法

List<Shop> list=pullxml(pull);




//自定义方法

private List<Shops> pullxml(XmlPullParser pull) {

//获得本地的xml文件

        File file=new File("mnt/sdcard/shangping.xml");

        try {

//文件读取

            FileInputStream inputStream = new FileInputStream(file);

//把读取的文件输入到pull中

            pull.setInput(inputStream, "utf-8");
            //获得事件

            int type = pull.getEventType();

//判断文件的标签是否是文档的最后

            while(type!=XmlPullParser.END_DOCUMENT){

//获得标签的名字

                String name = pull.getName();


                switch (type) {
                case XmlPullParser.START_TAG:
                    //判断名字
                    if(name.equals("shangpings")){
                        list = new ArrayList<Shops>();
                    }
                    if(name.equals("shangping"))
                    {
                        shop = new Shops();
                    }
                    if(name.equals("name"))
                    {
                        String sname = pull.nextText();
                        shop.setName(sname);
                    }
                    if(name.equals("price"))
                    {
                        String sprice = pull.nextText();
                        shop.setPrice(sprice);
                    }
                    if(name.equals("path"))
                    {
                        String spath = pull.nextText();
                        shop.setPath(spath);
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if(name.equals("shangping"))
                    {
//                    list.add(shop);
                    Cursor cursor = resolver.query(Uri.parse(url), null, null, null, null);
                    
                        
                if(cursor.getCount()<3)
                {
ContentValues values=new ContentValues();
values.put("name", shop.getName());
values.put("price", shop.getPrice());
values.put("path", shop.getPath());
                    resolver.insert(Uri.parse(url), values);
                }
                    shop=null;
                    }
                break;
                
                }
                //进行下一次
                type = pull.next();
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return list;

    }

返回的list就是所解析的结果

注意:pull.next()获得下一次的位置


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值