生成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(); } } }