xml文件序列化方式

xml文件序列化即将对象集合转化为xml文件格式。

有两种方式序列化:

1)使用相应流进行逻辑拼接
2)使用xml的序列化器Xmlserlizer

1、使用StringBuffer拼接

StringBuffer sb = new StringBuffer(); 多线程访问安全
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        sb.append("<persons>");
        for (int i = 0; i < persons.size(); i++) {
            sb.append("<person>");
            sb.append("<name>");
            sb.append(persons.get(i).getName());
            sb.append("</name>");
            sb.append("<age>");
            sb.append(persons.get(i).getAge());
            sb.append("</age>");
            sb.append("</person>");
        }
        sb.append("</persons>");
        String xml = sb.toString();
        try {
            FileOutputStream fos = openFileOutput("person.xml", MODE_PRIVATE);
            fos.write(xml.getBytes());
            fos.close();

2、使用xml序列化器Xmlserlizer

public void create(View v){
        try {
            List<PersonInfo> infos = new ArrayList<PersonInfo>();
            infos.add(new PersonInfo(1, "小明", 32));
            infos.add(new PersonInfo(2, "小红", 32));
            //把对象集合变成xml
            //xml序列化器
            XmlSerializer serializer = Xml.newSerializer();//使用接口去接收一个真实的对象
            FileOutputStream os = openFileOutput("persons.xml", Context.MODE_PRIVATE);
            serializer.setOutput(os, "utf-8");//指定数据输出的路径
            serializer.startDocument("utf-8", true);//文档的开始
            serializer.startTag(null, "persons");//标签的开始
            for(PersonInfo info:infos){
                serializer.startTag(null, "person");
                serializer.attribute(null, "id", info.id+"");//属性
                //name
                serializer.startTag(null, "name");
                serializer.text(info.name);//文本节点
                serializer.endTag(null, "name");
                //age
                serializer.startTag(null, "age");
                serializer.text(info.age+"");
                serializer.endTag(null, "age");
                serializer.endTag(null, "person");
            }
            serializer.endTag(null, "persons");//标签的结束
            serializer.endDocument();//文档的结束
            os.close();//关流
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值