我们在开发的过程中,有时会用到将一些数据保存到xml文件中,在Android中给我们提供了xml序列化来帮我们创建一个xml文件,这里我用两种方式来创建xml文件。
一、使用字符串拼接的方式来创建
二、使用Android提供的xml序列化来创建
/**
* 第一种:生成XML文件按钮
* @param v
*/
public void generationXmlFile(View v){
//创建StringBuffer对象
StringBuffer sb=new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<smss>");
//遍历集合
for(SmsInfo info:smsInfoList){
sb.append("<sms id="+info.getId()+">");
sb.append("<data>"+info.getData()+"</data>");
sb.append("<type>"+info.getType()+"</type>");
sb.append("<body>"+info.getContent()+"</body>");
sb.append("<address>"+info.getAddress()+"</address>");
sb.append("</sms>");
}
sb.append("</smss>");
//保存到内部存储设备中
//boolean isTrue=FileUtils.saveXmlFile(this, sb.toString());
boolean isTrue=FileUtils.saveXmlFileSdCard(this, sb.toString());
if(isTrue)
Toast.makeText(this, "保存短信信息成功", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "保存短信信息失败", Toast.LENGTH_SHORT).show();
}
/**
* 第二种:生成xml文件的按钮方法
* @param v
*/
public void generationXmlFile1(View v){
try {
//创建Xml序列化对象
XmlSerializer serializer=Xml.newSerializer();
//创建File对象
File file=new File(Environment.getExternalStorageDirectory(),"back.xml");
//创建FileOutputStream对象
FileOutputStream fos=new FileOutputStream(file);
//为序列化设置OutputStream对象
serializer.setOutput(fos, "UTF-8");
//设置xml文件的头
serializer.startDocument("UTF-8", true);
//开始标签
serializer.startTag(null, "smss");
//遍历集合
for(SmsInfo info:smsInfoList){
serializer.startTag(null, "sms");
//设置属性
serializer.attribute(null, "id", info.getId()+"");
serializer.startTag(null, "data");
serializer.text(info.getData()+"");
serializer.endTag(null, "data");
serializer.startTag(null, "type");
serializer.text(info.getType()+"");
serializer.endTag(null, "type");
serializer.startTag(null, "body");
serializer.text(info.getContent()+"");
serializer.endTag(null, "body");
serializer.startTag(null, "address");
serializer.text(info.getAddress()+"");
serializer.endTag(null, "address");
serializer.endTag(null, "sms");
}
//结束标签
serializer.endTag(null, "smss");
//结束文档
serializer.endDocument();
//关闭输出流对象
fos.close();
Toast.makeText(this, "备份成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
集合中的实体类
/**
* 短信信息实体类
* @author xiaohu
*
*/
public class SmsInfo {
//id
private int id;
//时间
private long data;
//短信类型
private int type;
//短信内容
private String content;
//地址
private String address;
public SmsInfo(int id,long data, int type, String content, String address) {
super();
this.id=id;
this.data = data;
this.type = type;
this.content = content;
this.address = address;
}
public SmsInfo() {
super();
}
}
get和set方法省略
//创建集合
List<SmsInfo> smsInfoList=new ArrayList<SmsInfo>();
//创建Random对象
Random r=new Random();
for(int i=0;i<10;i++){
smsInfoList.add(new SmsInfo(i+1,System.currentTimeMillis(), r.nextInt(2)+1, "短信内容"+i, ""+i));
}