Android初級教程:使用xml序列器

來源:互聯網
上載者:User

標籤:

之前備份簡訊的時候產生xml都是手動拼字的,有一個問題:當簡訊裡面存在</body>這樣的標籤的時候,最後結果就不是完整的xml檔案,顯然出錯。但是,今天使用序列化器的方式,就能有效解決上邊遇到的問題。就看一下序列化器如何產生xml檔案:

給活動定義一個布局檔案,裡面知識簡單的加入一個按鈕:

<Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="備分簡訊"         android:onClick="click"        />

看主活動中的代碼如下:

package com.itydl.xmlserializer;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;import com.itydl.createxml.domain.Message;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.content.Context;import android.util.Xml;import android.view.Menu;import android.view.View;//為了更好地儲存不同,且負責的資料,使用xml序列器public class MainActivity extends Activity {List<Message> smsList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 虛擬10條簡訊smsList = new ArrayList<Message>();for (int i = 0; i < 10; i++) {Message sms = new Message("小志好棒" + i, System.currentTimeMillis()+ "", "138" + i + i, "1");smsList.add(sms);}}public void click(View v){//使用xml序列化器產生xml檔案。序列化器會把亂七八糟的東西(簡訊裡有標籤屬性)過濾掉//1.拿到序列化器對象XmlSerializer xs = Xml.newSerializer();//2.初始化.因為涉及到xml檔案,因此初始化也包含檔案名稱和路徑File file = new File(Environment.getExternalStorageDirectory(),"sms.xml");try {FileOutputStream fos = new FileOutputStream(file);//enconding:指定用什麼編碼產生xml檔案xs.setOutput(fos, "utf-8");//setOutput(OutputStream os, String encoding) ,編碼方式預設u8//3.開始產生xml檔案//enconding:指定頭結點中的enconding屬性的值xs.startDocument("utf-8", true);//產生頭結點(最高一行),startDocument(String encoding, Boolean standalone) xs.startTag(null, "message");//產生一個根節點,開始標籤節點for (Message sms : smsList) {xs.startTag(null, "sms");xs.startTag(null, "body");//start和end一對一對的寫。還有四個子節點xs.text(sms.getBody() + "<body>");//這樣不會報錯。而是把<body>當做了內容了xs.endTag(null, "body");xs.startTag(null, "date");xs.text(sms.getDate());xs.endTag(null, "date");xs.startTag(null, "type");xs.text(sms.getType());xs.endTag(null, "type");xs.startTag(null, "address");xs.text(sms.getAddress());xs.endTag(null, "address");xs.endTag(null, "sms");}xs.endTag(null, "message");//告訴序列化器,檔案產生完畢xs.endDocument();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }}

當然,對sdcard寫,需要寫入權限。加入即可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

運行程式,點擊備份按鈕。我們可以在sdcard目錄找到這個檔案:

匯出來看一下裡面的格式如下:

後邊省略,產生的xml檔案是沒有問題的。看到即使文本裡面出現了<body>標籤,也不會出現錯誤

Android初級教程:使用xml序列器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.