XML解析(訪問數據接口)

XML解析(訪問數據接口) android使用的是基於事件模型


pullParser.setInput(inputstream,"utf-8");


int ev=pullParser.getEventType();
pullParser.getName()//獲取標籤名稱
pullParser.getAttributeValue(0);
pullParser.nextText();//節點後面的文本節點的文本值
pullParser.next();

示例:

try {
            InputStream in=this.getAssets().open("students.xml");
            //創建解析器
            XmlPullParser parser= Xml.newPullParser();
            //StringReader();
            parser.setInput(in,"utf-8");//加載數據
            boolean flag=true;

            while(flag){
                int type=parser.getEventType();

                switch (type){
                    case XmlPullParser.START_TAG:
                        if(parser.getName().equals("name"))
                             Log.e("test",parser.nextText());//獲取文本
                        if(parser.getName().equals("student"))
                            Log.e("test",parser.getAttributeValue(0));//獲取屬性
                        break;
                    case XmlPullParser.START_DOCUMENT:
                        Log.e("test","開始");
                        break;
                    case XmlPullParser.END_DOCUMENT:
                        Log.e("test","結束");
                        flag=false;
                        break;
                }
                type=parser.next();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

把數據保存到xml:

XmlSerializer ser=Xml.newSerializer();
ser.setOutput(outputstream,"utf-8");
ser.startDocument("utf-8",true);//設置<? version, encoding>的值即開始節點,第二個是否單獨存在
ser.startTag(null,"persons");//生成開始標記,第一個爲命名空間,
ser.attribute(null,"id",p.getId());//設置屬性,第一個爲命名空間,第二個爲屬性名
ser.text(p.getName());
ser.endTag(null,"persons");//結束標記
ser.endDocument();//結束

案例:

try {

            FileOutputStream out = this.openFileOutput("sxml.xlm",Context.MODE_PRIVATE);
            XmlSerializer ser=Xml.newSerializer();

            ser.setOutput(out,"utf-8");
            ser.startDocument("utf-8",true);//設置<? version, encoding>的值即開始節點,第二個是否單獨存在
            ser.startTag(null,"persons");//開始節點,第一個爲命名空間

                for(int i=0;i<10;i++){
                    ser.startTag(null,"person");
                    ser.attribute(null,"id",i+1+"");//設置屬性,第一個爲命名空間,第二個爲屬性名
                    ser.startTag(null,"name");
                    ser.text("admin");
                    ser.endTag(null,"name");
                    ser.endTag(null,"person");
                }

            ser.endTag(null,"persons");//結束節點
            ser.endDocument();//結束
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章