我們在開發的過程中,有時會用到將一些數據保存到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));
}