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();
        }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值