ホームページ >バックエンド開発 >XML/RSS チュートリアル >アンドロイドサックスはXMLファイルを作成します

アンドロイドサックスはXMLファイルを作成します

黄舟
黄舟オリジナル
2017-02-09 14:02:471461ブラウズ

最初の 2 つの記事では、sax が XML を解析し、解析関数を実装する方法を簡単に説明します。次にsaxを使ってxmlファイルを作成します。

saxを使用して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文件  
            // 实现此接口的对象包含构建转换结果树所需的信息  
            Result resultXml = new StreamResult(output);  
  
            // 用来得到XML字符串形式  
            // 一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串  
            StringWriter writerStr = new StringWriter();  
            // 构建转换结果树所需的信息。  
            Result resultStr = new StreamResult(writerStr);  
  
            // 创建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 关联的 Result  
            // 注:这两个th.setResult不能同时启用  
             th.setResult(resultXml);  
//           th.setResult(resultStr);  
            //创建根元素<calsses>,并设置其属性为空  
            th.startDocument();  
            AttributesImpl attr = new AttributesImpl();  
            th.startElement("", "calsses", "calsses", attr);  
              
            //创建一级子元素<group>,并设置其属性  
            attr.clear();  
            attr.addAttribute("","name", "name", "", "一年级");  
            attr.addAttribute("","num", "num", "", "10");  
            th.startElement("", "", "group", attr);  
            //创建二级子元素<person>,并设置其属性  
            attr.clear();  
            attr.addAttribute("","name", "name", "", "小明");  
            attr.addAttribute("","age", "age", "", "7");  
            th.startElement("", "", "person", attr);  
            //创建三级子元素<chinese>,并设置其值  
            attr.clear();  
            th.startElement("", "", "chinese", attr);  
            th.characters("语文90".toCharArray(), 0, "语文90".length());  
            th.endElement("", "", "chinese");  
            //创建三级子元素<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;  
    }  
}

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 で作成された XML ファイルの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。