溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

android sax創(chuàng)建xml文件的方法

發(fā)布時間:2021-01-27 09:33:07 來源:億速云 閱讀:146 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關(guān) android sax創(chuàng)建xml文件的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體的如何使用sax創(chuàng)建xml,在程序中都加了相關(guān)的注釋,還是直接上代碼.

package cn.com.sax;  
  
import java.io.OutputStream;  
import java.io.StringWriter;  
  
import javax.xml.transform.OutputKeys;  
import javax.xml.transform.Result;  
import javax.xml.transform.Transformer;  
import javax.xml.transform.TransformerConfigurationException;  
import javax.xml.transform.sax.SAXTransformerFactory;  
import javax.xml.transform.sax.TransformerHandler;  
import javax.xml.transform.stream.StreamResult;  
  
import org.xml.sax.SAXException;  
import org.xml.sax.helpers.AttributesImpl;  
  
import android.util.Log;  
  
class SxaCreateXml {  
    /**  
     * SAX方式生成XML  
     *   
     * @param list  
     * @return  
     */  
    public String saxToXml(OutputStream output) {  
        String xmlStr = null;  
        try {  
            // 用來生成XML文件  
            // 實現(xiàn)此接口的對象包含構(gòu)建轉(zhuǎn)換結(jié)果樹所需的信息  
            Result resultXml = new StreamResult(output);  
  
            // 用來得到XML字符串形式  
            // 一個字符流,可以用其回收在字符串緩沖區(qū)中的輸出來構(gòu)造字符串  
            StringWriter writerStr = new StringWriter();  
            // 構(gòu)建轉(zhuǎn)換結(jié)果樹所需的信息。  
            Result resultStr = new StreamResult(writerStr);  
  
            // 創(chuàng)建SAX轉(zhuǎn)換工廠  
            SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory  
                    .newInstance();  
            // 轉(zhuǎn)換處理器,偵聽 SAX ContentHandler  
            // 解析事件,并將它們轉(zhuǎn)換為結(jié)果樹 Result  
            TransformerHandler th = sff.newTransformerHandler();  
            // 將源樹轉(zhuǎn)換為結(jié)果樹  
            Transformer transformer = th.getTransformer();  
            // 設(shè)置字符編碼  
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");  
            // 是否縮進  
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");  
  
            // 設(shè)置與用于轉(zhuǎn)換的此 TransformerHandler 關(guān)聯(lián)的 Result  
            // 注:這兩個th.setResult不能同時啟用  
             th.setResult(resultXml);  
//           th.setResult(resultStr);  
            //創(chuàng)建根元素<calsses>,并設(shè)置其屬性為空  
            th.startDocument();  
            AttributesImpl attr = new AttributesImpl();  
            th.startElement("", "calsses", "calsses", attr);  
              
            //創(chuàng)建一級子元素<group>,并設(shè)置其屬性  
            attr.clear();  
            attr.addAttribute("","name", "name", "", "一年級");  
            attr.addAttribute("","num", "num", "", "10");  
            th.startElement("", "", "group", attr);  
            //創(chuàng)建二級子元素<person>,并設(shè)置其屬性  
            attr.clear();  
            attr.addAttribute("","name", "name", "", "小明");  
            attr.addAttribute("","age", "age", "", "7");  
            th.startElement("", "", "person", attr);  
            //創(chuàng)建三級子元素<chinese>,并設(shè)置其值  
            attr.clear();  
            th.startElement("", "", "chinese", attr);  
            th.characters("語文90".toCharArray(), 0, "語文90".length());  
            th.endElement("", "", "chinese");  
            //創(chuàng)建三級子元素<english>,并設(shè)置其值  
            th.startElement("", "", "english", attr);  
            th.characters("英語80".toCharArray(), 0, "英語80".length());  
            th.endElement("", "", "english");  
              
            th.endElement("", "", "person");  
            th.endElement("", "", "group");  
            th.endElement("", "calsses", "calsses");  
            th.endDocument();  
            xmlStr = writerStr.getBuffer().toString();  
        } catch (TransformerConfigurationException e) {  
            Log.e("TEST", ""+e.toString());  
        } catch (SAXException e) {  
            Log.e("TEST", ""+e.toString());  
        } catch (Exception e) {  
            Log.e("TEST", ""+e.toString());  
        }  
        Log.e("TEST","生成的"+xmlStr);  
        return xmlStr;  
    }  
}

調(diào)用這個方法即可實現(xiàn)創(chuàng)建xml文件的目的。

new SxaCreateXml().saxToXml(openFileOutput("sax.xml",  Context.MODE_PRIVATE));

生成的sax.xml文件還是在data/data/cn.xxx.xxx/files文件夾下。

<?xml version="1.0" encoding="UTF-8"?>
<calsses>  
<group name="一年級" num="10">  
<person name="小明" age="7">  
<chinese>語文90</chinese>  
<english>英語80</english>  
</person>  
</group>  
</calsses>

關(guān)于“ android sax創(chuàng)建xml文件的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI