1. 程式人生 > >安卓通過XmlSerializer生成xml檔案

安卓通過XmlSerializer生成xml檔案

該博文是在上一篇博文的基礎上對主介面進行修改的,上篇博文連結: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();
        }

    }
}