安卓通過XmlSerializer生成xml檔案
阿新 • • 發佈:2018-11-19
該博文是在上一篇博文的基礎上對主介面進行修改的,上篇博文連結:https://blog.csdn.net/liyunfu233/article/details/84144934
對按鈕單機事件進行修改
1、獲取XmlSerializer類的例項 通過xml這個工具類獲取
2、設定XmlSerializer序列化的引數
首先獲取檔案路徑,初始化輸出流,然後將序列化的引數設定好
3、開始寫xml文件開頭,根節點開頭,迴圈寫sms節點(address節點,body節點,date節點,),根節點結束,文件結束,關閉輸出流。
主介面完整程式碼如下:
package com.example.createxmlv2; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.util.Xml; import android.view.View; import android.widget.Button; import org.xmlpull.v1.XmlSerializer; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { List<Sms> smsLists; Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]初始化我們要備份的資料 smsLists=new ArrayList<Sms>(); for (int i=0;i<10;i++){ Sms sms=new Sms(); sms.setAddress("10008"+i); sms.setBody("nihao"+i); sms.setDate("201"+i); //[2]把sms物件加入到集合中 smsLists.add(sms); } } //點選按鈕通過 stringBuffer的方式生成一個xml的檔案 public void click(View view) { try { //[1]獲取xmlSerializer類的例項 通過xml這個工具類獲取 XmlSerializer serializer= Xml.newSerializer(); //[2]設定xmlSerializer序列化的引數 File file=new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml"); FileOutputStream fos=new FileOutputStream(file); serializer.setOutput(fos,"utf-8"); //[3]開始寫xml文件開頭 serializer.startDocument("utf-8",true); //[4]寫xml的根節點 namespace 名稱空間 serializer.startTag(null,"smss"); //[5]迴圈寫sms節點 for (Sms sms:smsLists){ serializer.startTag(null,"sms"); //開始寫address節點 serializer.startTag(null,"address"); serializer.text(sms.getAddress()); serializer.endTag(null,"address"); //開始寫body節點 serializer.startTag(null,"body"); serializer.text(sms.getBody()); serializer.endTag(null,"body"); //開始寫date節點 serializer.startTag(null,"date"); serializer.text(sms.getDate()); serializer.endTag(null,"date"); serializer.endTag(null,"sms"); } serializer.endTag(null,"smss"); //寫文件結尾 serializer.endDocument(); fos.close();//關閉流 } catch (Exception e) { e.printStackTrace(); } } }