具体的如何使用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; } }
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 举报,一经查实,本站将立刻删除。