Pull解析例項

葵花的微笑發表於2017-08-25

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()獲得下一次的位置


相關文章