[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代码

 

package com.tsh.makexml;

import java.io.File;
 java.io.FileNotFoundException;
 java.io.FileOutputStream;
 java.io.IOException;
 java.util.ArrayList;
 java.util.List;
 java.util.Random;

 org.xmlpull.v1.XmlSerializer;

 com.tsh.makexml.domain.SmsInfo;

 android.app.Activity;
 android.os.Bundle;
 android.os.Environment;
 android.provider.Telephony.Sms;
 android.util.Xml;
 android.view.View;
 android.widget.Toast;

public class MainActivity extends Activity {
    private List<SmsInfo> smsInfos;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        smsInfos=new ArrayList<SmsInfo>();
        Random random=new Random();
        String num="188000000";
        for(int i=0;i<10;i++){
            int type=random.nextInt(2)+1;
            smsInfos.add(new SmsInfo(System.currentTimeMillis(),type,"短信内容"+i,num+i));
        }
    }
    /**
     * 备份短信第一种
     * @param v
     */
     backSms(View v){
        StringBuilder sb= StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        sb.append("<smss>");
        for(SmsInfo sms:smsInfos){
            sb.append("<body>"+sms.getMessage()+"</body>");
            sb.append("<date>"+sms.getDate()+"</date>");
            sb.append("<type>"+sms.getType()+"</type>");
            sb.append("<tel>"+sms.getAddress()+"</tel>");
        }
        sb.append("</smss>"try {
            File file=new File(Environment.getExternalStorageDirectory(),"backup.xml");
            FileOutputStream fos= FileOutputStream(file);
            fos.write(sb.toString().getBytes());
            fos.close();
            Toast.makeText(this,"保存成功",0).show();
        } catch (Exception e) {
            Toast.makeText().show();
        }
    }
    
     * 备份短信第二种
     *  backSms2(View v){
        XmlSerializer serializer=Xml.newSerializer();
        );
            FileOutputStream os= FileOutputStream(file);
            serializer.setOutput(os,"utf-8");
            serializer.startDocument("utf-8",true);
            serializer.startTag(null,"smss");
            (SmsInfo sms:smsInfos){
                serializer.startTag();
                serializer.attribute(,sms.getAddress());
                serializer.text(sms.getMessage());
                serializer.endTag();
            }
            serializer.endTag();
            serializer.endDocument();
            os.close();
            Toast.makeText().show();
        }
    }
}

 

业务bean代码

 com.tsh.makexml.domain;

class SmsInfo {
    private long date;
    int type;
    private String message;
     String address;
    public SmsInfo() {
    }    
    public SmsInfo(long date,1)"> type,String message,String string) {
        ();
        this.date = date;
        this.type = type;
        this.message = message;
        this.address = string;
    }
     getDate() {
        return date;
    }
    void setDate( date) {
         getType() {
         type;
    }
    void setType( type) {
         String getMessage() {
         message;
    }
     setMessage(String message) {
         String getAddress() {
         address;
    }
     setAddress(String address) {
         address;
    }
    
}

 

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...