Android提供了XmlSerializer来实现XML文件的序列化。相比传统方式,更高效安全。

传统方式:

public void backSms(View view){//假设我已经获取到了所有的短信StringBuilder sb = new StringBuilder();sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");sb.append("<smss>");for(SmsInfo info: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{File file = new File(Environment.getExternalStorageDirectory(),"backup.xml");FileOutputStream fos = new FileOutputStream(file);fos.write(sb.toString().getBytes());Toast.makeText(this, "备份成功", Toast.LENGTH_LONG).show();}catch(Exception e){e.printStackTrace();Toast.makeText(this, "备份失败", Toast.LENGTH_LONG).show();}}

采用XmlSerializer实现的方式:

public void backSms2(View view){try{XmlSerializer serializer =  Xml.newSerializer();File file = new File(Environment.getExternalStorageDirectory(),"backup2.xml");FileOutputStream os = new FileOutputStream(file);//初始化序列号器 指定XML数据写入到哪个文件 并且指定文件的编码方式serializer.setOutput(os,"utf-8");serializer.startDocument("utf-8", true);serializer.startTag(null, "smss");for(SmsInfo info: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(Exception e){e.printStackTrace();Toast.makeText(this, "备份失败", 0);}}


更多相关文章

  1. android 调用系统相机拍照并保存照片原图
  2. 安卓APP:利用AndroidStudio开发usb串口通信软件【第2步】
  3. android studio基础教程:3.美化按钮
  4. 管理应用自启动的方案
  5. Android(安卓)javah -jni 找不到类的解决方法
  6. 译:Android(安卓)N不再支持通过Intent传递“file://”scheme
  7. 自定义Dialog的几种实现方式
  8. Android:在Eclipse下开发android应用产生的问题及解决方法
  9. uiautomatorviewer.bat的使用

随机推荐

  1. 如何在进行单元测试时覆盖php://输入
  2. 如何在mysql中配置区分大小写的数据库标
  3. 在两个不同的地方分割/爆炸一个PHP字符串
  4. 如何用jQuery AJAX调用发送所有当前的pos
  5. PHP实例————万年历
  6. php isset和empty方法的区别
  7. 如何调试UPDATE函数在PHP中无法正常工作
  8. PHP获取来路域名 关键字
  9. PHP微信公众平台跳转网页实现定位思路 By
  10. PHP更新基于其他表的表数据