微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android sax创建xml文件

前两篇文章,对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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类