[android] xml文件的序列化

前端之家收集整理的这篇文章主要介绍了[android] xml文件的序列化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

生成xml文件,模拟备份短信,创建短信的业务bean,创建一个domain的包放业务bean,这个业务bean里面,定义成员属性生成get set方法生成有参和无参的构造方法

 

生成随机数,实例化Random调用Random对象的nextInt(n)方法生成0n之间的随机数,获取当前系统的时间戳System.currentTimeMillis(),使用for循环,循环生成一个list集合,代表短信的内容

 

点击保存按钮以后,使用StringBuilder对象append()拼接成一个xml文件内容,根据上几节内容保存的SD卡中。记住要在清单文件中加权限

android.permission.WRITE_EXTERNAL_STORAGE,如果出现两个清单文件,不能删除这个,是工具bug。如果右键部署的时候,又开启了一个模拟器,那么这是adb挂掉了,关闭eclipse,在任务管理器中关闭adb.exe,重新打开eclipse

 

以上是传统方式,android提供了一个面向对象的方式

获取XmlSerilier对象,通过Xml.newSerilier()方法

调用XmlSerilier对象的setOutput(os,encoding)方法文件输出流,编码

调用XmlSerilier对象的startDocument(encoding,standalone)方法xml文件的声明,编码,是否独立

调用XmlSerilier对象的startTag(namespace,name)方法,开始节点,命名空间,节点名称

调用XmlSerilier对象的endTag(namespace,结束节点,命名空间,节点名称

调用XmlSerilier对象的attribute(namespace,name,value)方法,节点属性,命名空间,属性名称属性

调用XmlSerilier对象的text()方法,节点内容

activity代码

 

  1. package com.tsh.makexml;
  2. import java.io.File;
  3. java.io.FileNotFoundException;
  4. java.io.FileOutputStream;
  5. java.io.IOException;
  6. java.util.ArrayList;
  7. java.util.List;
  8. java.util.Random;
  9. org.xmlpull.v1.XmlSerializer;
  10. com.tsh.makexml.domain.SmsInfo;
  11. android.app.Activity;
  12. android.os.Bundle;
  13. android.os.Environment;
  14. android.provider.Telephony.Sms;
  15. android.util.Xml;
  16. android.view.View;
  17. android.widget.Toast;
  18. public class MainActivity extends Activity {
  19. private List<SmsInfo> smsInfos;
  20. @Override
  21. protected void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.activity_main);
  24. smsInfos=new ArrayList<SmsInfo>();
  25. Random random=new Random();
  26. String num="188000000";
  27. for(int i=0;i<10;i++){
  28. int type=random.nextInt(2)+1;
  29. smsInfos.add(new SmsInfo(System.currentTimeMillis(),type,"短信内容"+i,num+i));
  30. }
  31. }
  32. /**
  33. * 备份短信第一种
  34. * @param v
  35. */
  36. backSms(View v){
  37. StringBuilder sb= StringBuilder();
  38. sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  39. sb.append("<smss>");
  40. for(SmsInfo sms:smsInfos){
  41. sb.append("<body>"+sms.getMessage()+"</body>");
  42. sb.append("<date>"+sms.getDate()+"</date>");
  43. sb.append("<type>"+sms.getType()+"</type>");
  44. sb.append("<tel>"+sms.getAddress()+"</tel>");
  45. }
  46. sb.append("</smss>"try {
  47. File file=new File(Environment.getExternalStorageDirectory(),"backup.xml");
  48. FileOutputStream fos= FileOutputStream(file);
  49. fos.write(sb.toString().getBytes());
  50. fos.close();
  51. Toast.makeText(this,"保存成功",0).show();
  52. } catch (Exception e) {
  53. Toast.makeText().show();
  54. }
  55. }
  56. * 备份短信第二种
  57. * backSms2(View v){
  58. XmlSerializer serializer=Xml.newSerializer();
  59. );
  60. FileOutputStream os= FileOutputStream(file);
  61. serializer.setOutput(os,"utf-8");
  62. serializer.startDocument("utf-8",true);
  63. serializer.startTag(null,"smss");
  64. (SmsInfo sms:smsInfos){
  65. serializer.startTag();
  66. serializer.attribute(,sms.getAddress());
  67. serializer.text(sms.getMessage());
  68. serializer.endTag();
  69. }
  70. serializer.endTag();
  71. serializer.endDocument();
  72. os.close();
  73. Toast.makeText().show();
  74. }
  75. }
  76. }

 

业务bean代码

  1. com.tsh.makexml.domain;
  2. class SmsInfo {
  3. private long date;
  4. int type;
  5. private String message;
  6. String address;
  7. public SmsInfo() {
  8. }
  9. public SmsInfo(long date,1)"> type,String message,String string) {
  10. ();
  11. this.date = date;
  12. this.type = type;
  13. this.message = message;
  14. this.address = string;
  15. }
  16. getDate() {
  17. return date;
  18. }
  19. void setDate( date) {
  20. getType() {
  21. type;
  22. }
  23. void setType( type) {
  24. String getMessage() {
  25. message;
  26. }
  27. setMessage(String message) {
  28. String getAddress() {
  29. address;
  30. }
  31. setAddress(String address) {
  32. address;
  33. }
  34. }

 

猜你在找的Android相关文章