标签:xml备份数据 sms android xml序列化器
xml可以用来备份文件数据Android中xml的读写
通常把数据封装到对象中,然后通过对象俩操作数据。包名不能使用Android或Java的关键字。
当一个应用被删除时,该应用在内部存储空间内的所有数据都会被删除,而应用在外部存储空间的数据不会被删除。备份文件一般都放在外部存储空间中。
对于xml文件的校验,可以把xml文件放到浏览器中去解析,如果能够正常解析说明xml文件是正确的。
短信备份案例:
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.test.backsms.MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="back"
android:text="备份短信" />
</RelativeLayout>
通过bean封装对象
package com.test.backsms.domain;
public class MessageBean {
//短信的内容
private String body;
//短信接收日期
private String date;
//短信发送的目的地
private String address;
//短信的类型:接收或者是发送
private String type;
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public MessageBean(String body, String date, String address, String type) {
super();
this.body = body;
this.date = date;
this.address = address;
this.type = type;
}
}
package com.test.backsms;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.test.backsms.domain.MessageBean;
public class MainActivity extends Activity {
List<MessageBean> smsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//模拟短信
//创建list对象存储短信
smsList = new ArrayList<MessageBean>();//非常重要,不能忘记
for(int i=0;i<10;i++){
MessageBean mb = new MessageBean("adsfasf", i+"", "13985666565", "1");
System.out.println(mb.getAddress()+mb.getBody()+mb.getDate()+mb.getType());
smsList.add(mb);
}
}
//备份短信
public void back(View v) {
//现在内存中把数据格式拼接出来,然后再写出去
//通过StringBuffer对象拼接
StringBuffer sb = new StringBuffer();
//添加xml声明
sb.append("<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>");
//添加根节点
sb.append("<message>");
//添加子节点
for (MessageBean sms :smsList) {
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>");
String path = "sdcard/sms.xml";
File file = new File(path);
try {
FileOutputStream fos = new FileOutputStream(file);
try {
fos.write(sb.toString().getBytes());
//关流
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
添加写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在Android中,提供了xml序列化器来生成xml文件。在Android中默认的编码格式为utf-8 。xml序列化器会过滤掉没有用到的不完整的标签
package com.test.backsms;
标签:xml备份数据 sms android xml序列化器
原文地址:http://blog.csdn.net/ning_xian_hong/article/details/46044281