Android序列化XML数据

论坛 期权论坛 脚本     
niminba   2021-5-26 12:30   4073   0
什么是XML?
首先我们先了解一下什么是XML。XML,可扩展标记语言 (Extensible Markup Language) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,这是百度百科的解释。而XML是一种在Internet中传输数据的常见格式,它与HTML一样,都是SGML(标准通用标记语言),无论你是需要通过Internet访问数据,或者发送数据给Web服务,都可能需要用到XML的知识。恰恰Android应用程序需要和网络交互,否则只是一款单机的无互动的应用程序,所以很可能在Android应用程序开发的过程中使用到XML。
由于XML的扩展性强,致使它需要有稳定的基础规则来支持扩展,该语法规则需要注意的是:
开始和结束标签匹配。
嵌套标签不能相互嵌套。
区分大小写。

XML序列化
当获取到一段数据后,如果需要把它序列化成XML的格式,通常有两种办法:
拼接字符串的形式序列化一个XML数据。
使用XmlSerializer类序列化一个XML数据。
使用拼接字符串的方式很简单,就是个体力活,把需要序列化的对象,依照一定的格式序列化即可。下面通过一个示例讲解来演示如何拼接字符串,在示例中模拟联系人数据,然后对其进行序列化成XML,最后保存在SD卡上。
复制代码 代码如下:

private void backupToContact1(){
        StringBuilder sbuilder=new StringBuilder();
        // 设置XML的数据头
        sbuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        sbuilder.append("<contacts>");
        // 遍历联系人信息
        for(Contact contact:Contacts){
            if(contact!=null){
                sbuilder.append("<contact id='"+contact.getId()+"'>");
                sbuilder.append("<name>");
                sbuilder.append(contact.getName());
                sbuilder.append("</name>");

                sbuilder.append("<number>");
                sbuilder.append(contact.getNumber());
                sbuilder.append("</number>");

                sbuilder.append("<address>");
                sbuilder.append(contact.getAddress());
                sbuilder.append("</address>");

                sbuilder.append("</contact>");
            }
        }           
        sbuilder.append("</contacts>");
        try {
            // 在SD卡上创建一个xml文件
            File file=new File(Environment.getExternalStorageDirectory(),"backup1.xml");
            FileOutputStream fos=new FileOutputStream(file);
            // 把序列化的数据写入到XML文件中
            fos.write(sbuilder.toString().getBytes());
            fos.close();
            Toast.makeText(MainActivity.this, "备份成功", 0).show();
        } catch (IOException e) {
            Toast.makeText(MainActivity.this, "备份失败", 0).show();
            e.printStackTrace();
        }
    }

执行完之后,可以把SD卡上的XML文件导出到电脑上,查看其内容。
对于拼接字符串而言,可以看出,很容易出错,尤其是每个标签内妈JHK[XX NXZ^ XZ[X]]K\i!,z-)H K NIO ]/f9$9b#c&/[H^\kS9"yk{."gh.)9.*/%S9 :!#9i."]\H]]H[H\HX]]OHNMLYHX] NMLOi#yb-. O [9. yi." ]]\HXHYHMNML[\HK[[]NXXYH[YI[[ [YI[X\ [X\\ZZ[Y\XXYHH[YI[[I[YI[X\ I[X\\ZZ[Y\XXYH[YI[[[YI[X\ [X\\ZZ[Y\XXYH[YI[[[YI[X\ [X\\ZZ[Y\XXYH[YI[[ [YI[X\ [X\\ZZ[Y\XXYHH[YI[[I[YI[X\ I[X\\ZZ[Y\XXYH[YI[[[YI[X\ [X\\ZZ[Y\XXYH[YI[[[YI[X\ [X\\ZZ[Y\XXYH[YI[[ [YI[X\  [X\\ZZ[Y\XXYHH[YI[[I[YI[X\ I[X\\ZZ[Y\XX ]g*9/#:+ch{`9. :)yg*9!ycey+yb9aiTchyayaiy`&]\H]]H[H\HX]]OH M YHX] M Oi#yb-. O [9. yi." ]]\HXHYHM M \Z\[[[YOH[ \Z\[UWTSQ]
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP