標籤:
在《Android 產生xml檔案》一文中使用流的形式寫入xml格式檔案,但是存在一定的問題,那就是在簡訊內容中不能出現<>之類的括弧,本文使用xml序列化器來解決
xml序列化器對象
XmlSerializer xs = Xml.newSerializer();
* 給序列化器設定輸出資料流
File file = new File(Environment.getExternalStorageDirectory(), "backupsms.xml");
FileOutputStream fos = new FileOutputStream(file);
//給序列化器指定好輸出資料流
xs.setOutput(fos, "utf-8");
* 開始產生xml檔案
xs.startDocument("utf-8", true);
xs.startTag(null, "smss");
......
代碼如下:
package com.wuyudong.createxml;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;import com.wuyudong.createxml.domain.Sms;import com.wuyudong.createxml2.R;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.util.Xml;import android.view.View;public class MainActivity extends Activity { List<Sms> message; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 建立10條虛擬簡訊 message = new ArrayList<Sms>(); for (int i = 0; i < 10; i++) { Sms sms = new Sms("第" + i + "條簡訊", System.currentTimeMillis() + "", "1", "" + i + i + i); message.add(sms); } } public void click(View v) { File file = new File(Environment.getExternalStorageDirectory(), "backup1.xml"); try { FileOutputStream fos = new FileOutputStream(file); // 擷取xml序列化器 XmlSerializer xs = Xml.newSerializer(); xs.setOutput(fos, "utf-8"); //產生xml頭 xs.startDocument("utf-8", true); //添加xml根節點 xs.startTag(null, "message"); for (Sms sms : message) { xs.startTag(null, "sms"); xs.startTag(null, "body"); xs.text(sms.getBody()); xs.endTag(null, "body"); xs.startTag(null, "date"); xs.text(sms.getDate()); xs.endTag(null, "date"); xs.startTag(null, "address"); xs.text(sms.getAddress()); xs.endTag(null, "address"); xs.startTag(null, "type"); xs.text(sms.getType()); xs.endTag(null, "type"); xs.endTag(null, "sms"); } xs.endTag(null, "message"); //產生xml頭 xs.endDocument(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
Android 使用xml序列化器產生xml檔案