Android 生成xml文件

时间:2021-05-11 11:53:57

生成XML文件备份短信,其格式为:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<message>
<
sms> <body>第0条短信</body> <date>1465041254178</date> <address>000</address> <type>1</type> </sms>
<
sms> <body>第1条短信</body> <date>1465041254179</date> <address>111</address> <type>1</type> </sms>
<
sms> <body>第2条短信</body> <date>1465041254179</date> <address>222</address> <type>1</type> </sms> </message>

建立Sms类

package com.wuyudong.createxml.domain;

public class Sms {

    private String body;
    private String date;
    private String type;
    private String address;

    public Sms(String body, String date, String type, String address) {
        super();
        this.body = body;
        this.date = date;
        this.type = type;
        this.address = address;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}

整几个虚拟的短信对象,存在list中,备份数据通常都是备份至sd卡

使用StringBuffer拼接字符串,* 把整个xml文件所有节点append到sb对象里

sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>");
//添加smss的开始节点
sb.append("<smss>");
.......
* 把sb写到输出流中

fos.write(sb.toString().getBytes());

完整代码如下:

package com.wuyudong.createxml;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import com.wuyudong.createxml.domain.Sms;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    List<Sms> message;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 创建10条虚拟短信
        message = new ArrayList<Sms>();
        for (int i = 0; i < 10; i++) {
            Sms sms = new Sms("第" + i + "条短信", System.currentTimeMillis() + "",
                    "1", "" + i + i + i);
            message.add(sms);
        }
    }

    public void click(View v) {
        File file = new File(Environment.getExternalStorageDirectory(),
                "backup.xml");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            StringBuffer sb = new StringBuffer();
            // 添加xml头
            sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>");
            // 添加根节点
            sb.append("<message>");
            // 每一条短信添加一个sms节点
            for (Sms sms : message) {
                sb.append("<sms>");
                sb.append("<body>");
                sb.append(sms.getBody());
                sb.append("</body>");
                sb.append("<date>");
                sb.append(sms.getDate());
                sb.append("</date>");
                sb.append("<address>");
                sb.append(sms.getAddress());
                sb.append("</address>");
                sb.append("<type>");
                sb.append(sms.getType());
                sb.append("</type>");
                sb.append("</sms>");
            }
            sb.append("</message>");
            fos.write(sb.toString().getBytes());
            fos.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}