Android生成Xml文件

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章