XML——写出XML文档(XSLT+StAX)
【0】README0.1) 本文描述部分转自 core java volume 2 , 旨在理解 XML——写出XML文档(XSLT+StAX) 的基础知识 ; 【1】写出文档(使用了 XSLT-eXtensible Stylesheet Language Transformation)1) 使用XSLT写出XML: 把DOM 树写出到输入流中, 最容易的方式是使用可扩展的格式页转换(eXtensible Stylesheet Language Transformation)API; (干货——XSLT定义) Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd");
t.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,"-//W3C//DTD SVG 20000802//EN");
t.setOutputProperty(OutputKeys.INDENT,"yes");
t.setOutputProperty(OutputKeys.METHOD,"xml");
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","2");
t.transform(new DOMSource(doc),new StreamResult(Files.newOutputStream(file.toPath())));
DOMImplementation impl = doc.getImplementation();
DOMImplementationLS imlpLS = (DOMImplementationLS)impl.getFeature("LS","3.0");
LSSerializer ser = implLS.createLSSerializer();
ser.getDomConfig().setParameter("format-pretty-print",true);
String str = ser.writeToString(doc);
LSOutput out = imlpLS.createLSOutput();
out.setEncoding("UTF-8");
out.setByteStream(new FileOutputStream(new File(workDir + "generate2.xml")));
ser.write(doc,out);
【2】使用StAX 写 XML文档(要知道, DOM解析器是基于SAX解析器的, DOM解析器比较复杂)1)我们看到, 如果通过写DOM树的方法来产生 XML文件, 如果这个 DOM 树没有其他任何用途, 那么这种方式就不是很高效; XMLOutputFactory factory = XMLOutputFactory.instance();
XMLStreamWriter writer = factory.createXMLStreamWriter(out);
writer.writeStartDocument();
writer.writeStartElement(name);
writer.writeAttribute(name,value);
3)现在,可以通过再次调用 writeStartElement 添加新的子节点, 或者用下面 的语句写出字符: writer.writerCharacters(text);
writer.writeEndElement(); 这会导致当前元素被关闭;
writer.writeEmptyElement(name);
writer.writeEndDocument(); 这个调用将关闭所有元素;
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |