android xml序列化

通過程序的方式生產(chǎn)一個(gè)xml文件 ,xml的作用 傳輸數(shù)據(jù) 作為應(yīng)用的配置文件 描述現(xiàn)實(shí)生活中的數(shù)據(jù).

模擬數(shù)據(jù)

        smsLists = new ArrayList<Sms>();
        for (int i = 0; i < 10; i++) {
            Sms sms = new Sms();
            sms.setAddress("11" + i);
            sms.setBody("nihao" + i);
            sms.setDate("201" + i);
            // 把對象加入到集合里
            smsLists.add(sms);

        }

列化器 XmlSerializer序列化

1)獲取序列化器 XmlSerializer
2)告訴序列化器我要生成一個(gè)xml文件 對應(yīng)的方法setOutPut
3)根據(jù)xml語法生成我們自己想要的xml


// 使用谷歌封裝api來實(shí)現(xiàn)xml的序列化
    try {
        // 1)獲取序列化器 XmlSerializer
        XmlSerializer serializer = Xml.newSerializer();
        // 2)告訴序列化器我要生成一個(gè)xml文件 對應(yīng)的方法setOutPut
        File file = new File(Environment.getExternalStorageDirectory()
                .getPath(), "smsbackup2.xml");
        FileOutputStream fos = new FileOutputStream(file);
        serializer.setOutput(fos, "utf-8");
        // 3)根據(jù)xml語法生成我們自己想要的xml 使用谷歌封裝好的api實(shí)現(xiàn)xml序列化只需要調(diào)用對應(yīng)的方法 即可
        // 方法是按照面向?qū)ο蟮乃枷肴ピO(shè)計(jì)的
        serializer.startDocument("utf-8", true);
        // 4)生成xml的根標(biāo)簽 參1: 生產(chǎn)的xml文件需不需要命名空間(如同布局文件件中的Android) 不需要 參數(shù)2:標(biāo)簽的名字
        serializer.startTag(null, "smss");
        // 5)生產(chǎn)sms標(biāo)簽 需要循環(huán)生產(chǎn)
        for (Sms sms : smsLists) {
            serializer.startTag(null, "sms");
            // 6)生成address標(biāo)簽
            serializer.startTag(null, "address");
            serializer.text(sms.getAddress());
            serializer.endTag(null, "address");

            // 7)生成body標(biāo)簽
            serializer.startTag(null, "body");
            serializer.text(sms.getBody());
            serializer.endTag(null, "body");

            // 6)生成date標(biāo)簽
            serializer.startTag(null, "date");
            serializer.text(sms.getDate());
            serializer.endTag(null, "date");

            serializer.endTag(null, "sms");
        }

        serializer.endTag(null, "smss");
        serializer.endDocument();

    } catch (Exception e) {
        e.printStackTrace();
    }

Stringbuffer自己組拼

    // 點(diǎn)擊按鈕 使用stringbuffer自己組拼xml文件 生產(chǎn)這個(gè)xml文件用來存儲(chǔ)短信的數(shù)據(jù)
        // [1]創(chuàng)建StringBuffer
        StringBuffer sb = new StringBuffer();
        // [2]組拼xml文件頭
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");// 清單文件第一行,然后將"轉(zhuǎn)譯
        // [3]組拼xml的根節(jié)點(diǎn)(要有頭有尾)
        sb.append("<smss>");
        // [4]組拼sms節(jié)點(diǎn) 要循環(huán)(多條短信)
        for (Sms sms : smsLists) {
            sb.append("<sms>");
            // [5]組拼address節(jié)點(diǎn)
            sb.append("<address>" + sms.getAddress() + "</address>");
            // [6]組拼body節(jié)點(diǎn)
            sb.append("<body>" + sms.getBody() + "</body>");

            // [7]組拼date節(jié)點(diǎn)
            sb.append("<date>" + sms.getDate() + "</date>");
            sb.append("</sms>");
        }
        sb.append("</smss>");

        // [8]把組拼好的數(shù)據(jù)存到手機(jī)的sd卡目錄 注意 要加上對應(yīng)權(quán)限(在清單文件中android.permission.WRITE_EXTERNAL_STORAGE)
        try {
            File file = new File(Environment.getExternalStorageDirectory()
                    .getPath(), "smsbackup.xml");
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(sb.toString().getBytes());
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容