溫馨提示×

溫馨提示×

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

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

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

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

這篇文章給大家分享的是有關android中sax創(chuàng)建xml文件的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

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

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)此接口的對象包含構建轉換結果樹所需的信息
			Result resultXml = new StreamResult(output);

			// 用來得到XML字符串形式
			// 一個字符流,可以用其回收在字符串緩沖區(qū)中的輸出來構造字符串
			StringWriter writerStr = new StringWriter();
			// 構建轉換結果樹所需的信息。
			Result resultStr = new StreamResult(writerStr);

			// 創(chuàng)建SAX轉換工廠
			SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory
					.newInstance();
			// 轉換處理器,偵聽 SAX ContentHandler
			// 解析事件,并將它們轉換為結果樹 Result
			TransformerHandler th = sff.newTransformerHandler();
			// 將源樹轉換為結果樹
			Transformer transformer = th.getTransformer();
			// 設置字符編碼
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			// 是否縮進
			transformer.setOutputProperty(OutputKeys.INDENT, "yes");

			// 設置與用于轉換的此 TransformerHandler 關聯(lián)的 Result
			// 注:這兩個th.setResult不能同時啟用
			 th.setResult(resultXml);
//			 th.setResult(resultStr);
			//創(chuàng)建根元素<calsses>,并設置其屬性為空
			th.startDocument();
			AttributesImpl attr = new AttributesImpl();
			th.startElement("", "calsses", "calsses", attr);
			
			//創(chuàng)建一級子元素<group>,并設置其屬性
			attr.clear();
			attr.addAttribute("","name", "name", "", "一年級");
			attr.addAttribute("","num", "num", "", "10");
			th.startElement("", "", "group", attr);
			//創(chuàng)建二級子元素<person>,并設置其屬性
			attr.clear();
			attr.addAttribute("","name", "name", "", "小明");
			attr.addAttribute("","age", "age", "", "7");
			th.startElement("", "", "person", attr);
			//創(chuàng)建三級子元素<chinese>,并設置其值
			attr.clear();
			th.startElement("", "", "chinese", attr);
			th.characters("語文90".toCharArray(), 0, "語文90".length());
			th.endElement("", "", "chinese");
			//創(chuàng)建三級子元素<english>,并設置其值
			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;
	}
}

調用這個方法即可實現(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>

感謝各位的閱讀!關于“android中sax創(chuàng)建xml文件的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

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

AI