首页 > 网站 > 建站经验 > 正文

Android:序列化XML数-据

2019-11-02 15:08:04
字体:
来源:转载
供稿:网友

 什么是XML?

  首先我们先了解一下什么是XML。XML,可扩展标记语言 (Extensible Markup Language) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,这是百度百科的解释。而XML是一种在Internet中传输数据的常见格式,它与HTML一样,都是SGML(标准通用标记语言),无论你是需要通过Internet访问数据,或者发送数据给Web服务,都可能需要用到XML的知识。恰恰Android应用程序需要和网络交互,否则只是一款单机的无互动的应用程序,所以很可能在Android应用程序开发的过程中使用到XML。

  由于XML的扩展性强,致使它需要有稳定的基础规则来支持扩展,该语法规则需要注意的是:

开始和结束标签匹配。 嵌套标签不能相互嵌套。 区分大小写。

XML序列化

  当获取到一段数据后,如果需要把它序列化成XML的格式,通常有两种办法:

拼接字符串的形式序列化一个XML数据。 使用XmlSerializer类序列化一个XML数据。

  使用拼接字符串的方式很简单,就是个体力活,把需要序列化的对象,依照一定的格式序列化即可。下面通过一个示例讲解来演示如何拼接字符串,在示例中模拟联系人数据,然后对其进行序列化成XML,最后保存在SD卡上。

 1     private void backupToContact1(){ 2         StringBuilder sbuilder=new StringBuilder(); 3         // 设置XML的数据头 4         sbuilder.append("<?xml version="1.0" encoding="utf-8"?>"); 5         sbuilder.append("<contacts>"); 6         // 遍历联系人信息 7         for(Contact contact:Contacts){ 8             if(contact!=null){ 9                 sbuilder.append("<contact id='"+contact.getId()+"'>");10                 sbuilder.append("<name>");11                 sbuilder.append(contact.getName());12                 sbuilder.append("</name>");13                 14                 sbuilder.append("<number>");15                 sbuilder.append(contact.getNumber());16                 sbuilder.append("</number>");17                 18                 sbuilder.append("<address>");19                 sbuilder.append(contact.getAddress());20                 sbuilder.append("</address>");21                 22                 sbuilder.append("</contact>");23             }24         }            25         sbuilder.append("</contacts>");26         try {27             // 在SD卡上创建一个xml文件28             File file=new File(Environment.getExternalStorageDirectory(),"backup1.xml");29             FileOutputStream fos=new FileOutputStream(file);30             // 把序列化的数据写入到XML文件中31             fos.write(sbuilder.toString().getBytes());32             fos.close();33             Toast.makeText(MainActivity.this, "备份成功", 0).show();34         } catch (IOException e) {35             Toast.makeText(MainActivity.this, "备份失败", 0).show();36             e.printStackTrace();37         }38     }

  执行完之后,可以把SD卡上的XML文件导出到电脑上,查看其内容。

  对于拼接字符串而言,可以看出,很容易出错,尤其是每个标签内如果还存在属性值就更需要细心了。而且如果其内容存在特殊的符号,如“<、>”等,就会导致XML序列化后的XML文件出错,而使用XmlSerializer来序列化XML文件就不存在这些问题。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表