zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Androidxml文件的序列化实现代码

文件代码 实现 序列化
2023-06-13 09:15:18 时间

传统方式:

复制代码代码如下:


publicvoidbackSms(Viewview){
  //假设我已经获取到了所有的短信
  StringBuildersb=newStringBuilder();
  sb.append("<?xmlversion=\"1.0\"encoding=\"utf-8\"?>");
  sb.append("<smss>");
  for(SmsInfoinfo:smsInfos){
   sb.append("<sms>");

   sb.append("<address>");
   sb.append(info.getAddress());
   sb.append("</address>");

   
   sb.append("<type>");
   sb.append(info.getType());
   sb.append("</type>");

   sb.append("<body>");
   sb.append(info.getBody());
   sb.append("</body>");

   sb.append("<date>");
   sb.append(info.getBody());
   sb.append("</date>");

   sb.append("</sms>");
  }
  sb.append("</smss>");
  try{
   Filefile=newFile(Environment.getExternalStorageDirectory(),"backup.xml");
   FileOutputStreamfos=newFileOutputStream(file);
   fos.write(sb.toString().getBytes());
   Toast.makeText(this,"备份成功",Toast.LENGTH_LONG).show();
  }catch(Exceptione){
   e.printStackTrace();
   Toast.makeText(this,"备份失败",Toast.LENGTH_LONG).show();
  }

 }

采用XmlSerializer实现的方式:

复制代码代码如下:

publicvoidbackSms2(Viewview){
  try{
   XmlSerializerserializer= Xml.newSerializer();
   Filefile=newFile(Environment.getExternalStorageDirectory(),"backup2.xml");
   FileOutputStreamos=newFileOutputStream(file);
   //初始化序列号器指定XML数据写入到哪个文件并且指定文件的编码方式
   serializer.setOutput(os,"utf-8");
   serializer.startDocument("uft-8",true);
   serializer.startTag(null,"smss");
   for(SmsInfoinfo:smsInfos){
    serializer.startTag(null,"sms");
    serializer.attribute(null,"id",info.getId()+"");

    serializer.startTag(null,"body");
    serializer.text(info.getBody());
    serializer.endTag(null,"body");

    serializer.startTag(null,"address");
    serializer.text(info.getAddress());
    serializer.endTag(null,"address");

    serializer.endTag(null,"sms");
   }

   serializer.endTag(null,"smss");
   serializer.endDocument();
  }catch(Exceptione){
   e.printStackTrace();
   Toast.makeText(this,"备份失败",0);
  }

 }