zoukankan      html  css  js  c++  java
  • Android

    1、xml文件的序列化:采用XmlSerializer来实现XML文件的序列化。相比传统方式,更高效安全

    MainActivity.java

     1 package com.example.test_buildxmlfile;
     2 
     3 import java.io.File;
     4 import java.io.FileOutputStream;
     5 import java.util.ArrayList;
     6 import java.util.List;
     7 import java.util.Random;
     8 
     9 import org.xmlpull.v1.XmlSerializer;
    10 
    11 import android.app.Activity;
    12 import android.os.Bundle;
    13 import android.os.Environment;
    14 import android.util.Log;
    15 import android.util.Xml;
    16 import android.view.View;
    17 import android.widget.Toast;
    18 
    19 import com.example.test_getxmlfile.R;
    20 import com.test.MsgInfo.MsgInfo;
    21 
    22 /**
    23  * @author daomul
    24  *  主入口:xml文件的序列化
    25  */
    26 public class MainActivity extends Activity {
    27 
    28     private List<MsgInfo> msgList;
    29     @Override
    30     protected void onCreate(Bundle savedInstanceState) {
    31         super.onCreate(savedInstanceState);
    32         setContentView(R.layout.activity_main);
    33         
    34         msgList = new ArrayList<MsgInfo>();
    35         Random random= new Random(); //随机的 (1:发送      2 :接收)
    36         long number = 1340000001;    //手机地址
    37         
    38         //连续生成10条默认短信
    39         for (int i = 0; i < 10; i++) {
    40             msgList.add(new MsgInfo(System.currentTimeMillis(), random.nextInt(2), 
    41                     "text MSg"+i,Long.toString(number+i),i ));
    42         }
    43     }
    44  
    45     /**
    46      * 短信信息备份
    47      * @param view 点击事件触发
    48      */
    49     public void MsgSave(View view){
    50         
    51         try {
    52             //XML序列化
    53             XmlSerializer serializer= Xml.newSerializer();
    54 
    55             File file=new File(Environment.getExternalStorageDirectory(),"test.xml");
    56             FileOutputStream os= new FileOutputStream(file);
    57             
    58             serializer.setOutput(os, "utf-8");//os 是导出的文件位置  encoding 指代utf-8
    59             serializer.startDocument("utf-8", true);
    60 
    61             serializer.startTag(null, "msgs");
    62             for (MsgInfo msg:msgList) {
    63                 serializer.startTag(null, "msg");
    64                 serializer.attribute(null, "msg", msg.getId()+"");//添加ID属性
    65                 
    66                 serializer.startTag(null, "body");
    67                 serializer.text(msg.getBody());
    68                 serializer.endTag(null, "body");
    69 
    70                 serializer.startTag(null, "address");
    71                 serializer.text(msg.getAddress());
    72                 serializer.endTag(null, "address");
    73 
    74                 serializer.startTag(null, "type");
    75                 serializer.text(msg.getType()+"");
    76                 serializer.endTag(null, "type");
    77                 
    78                 serializer.startTag(null, "date");
    79                 serializer.text(msg.getDate()+"");
    80                 serializer.endTag(null, "date");
    81                 
    82                 serializer.endTag(null, "msg");
    83             }
    84             serializer.endTag(null, "msgs");
    85             
    86             serializer.endDocument();
    87             
    88             os.close();
    89             Toast.makeText(this, "XML序列化成功", 0).show();
    90             
    91         } catch (Exception e) {
    92             // TODO Auto-generated catch block
    93             e.printStackTrace();
    94             Toast.makeText(this, "XML序列化失败", 0).show();
    95         } 
    96     }
    97 }

        

    MsgInfo.java

     1 package com.test.MsgInfo;
     2 
     3 /**
     4  * @author daomul
     5  * 短信信息
     6  */
     7 
     8 public class MsgInfo {
     9     
    10     private long date;
    11     private int type;
    12     private String body;
    13     private String address;
    14     private int id;
    15     
    16     //无参构造方法
    17     public MsgInfo() {
    18         
    19     }
    20     
    21     //有参构造方法 Generate Constructor use fields...
    22     public MsgInfo(long date, int type, String body, String address,int id) {
    23         super();
    24         this.date = date;
    25         this.type = type;
    26         this.body = body;
    27         this.address = address;
    28         this.id = id;
    29     }
    30 
    31     //setter and getter
    32     public int getId() {
    33         return id;
    34     }
    35 
    36     public void setId(int id) {
    37         this.id = id;
    38     }
    39 
    40     public long getDate() {
    41         return date;
    42     }
    43     public void setDate(long date) {
    44         this.date = date;
    45     }
    46     public int getType() {
    47         return type;
    48     }
    49     public void setType(int type) {
    50         this.type = type;
    51     }
    52     public String getBody() {
    53         return body;
    54     }
    55     public void setBody(String body) {
    56         this.body = body;
    57     }
    58     public String getAddress() {
    59         return address;
    60     }
    61     public void setAddress(String address) {
    62         this.address = address;
    63     }
    64     
    65     
    66 
    67 }


    注: 写文件到SD卡中需要 user 权限

  • 相关阅读:
    PAT 甲级 1132 Cut Integer (20 分)
    AcWing 7.混合背包问题
    AcWing 9. 分组背包问题
    AcWing 5. 多重背包问题 II
    AcWing 3. 完全背包问题
    AcWing 4. 多重背包问题
    AcWing 2. 01背包问题
    AcWing 875. 快速幂
    AcWing 874. 筛法求欧拉函数
    AcWing 873. 欧拉函数
  • 原文地址:https://www.cnblogs.com/daomul/p/3599005.html
Copyright © 2011-2022 走看看