처음 두 기사에서는 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"?>
위는 android sax로 만든 xml 파일의 내용입니다. 더 많은 관련 내용은 PHP 중국어를 참고해주세요. 홈페이지(www.php.cn)!