如何将未转义的XML写入XMLStreamWriter?
发布时间:2020-12-16 05:35:27 所属栏目:百科 来源:网络整理
导读:我有一些小的 XML块,应该作为子元素嵌入到一个大的XML中.有没有办法将这些块写入XMLStreamWriter而不转义它们? 以下是处理此问题的几个选项: 选项#1 – 使用javax.xml.transform.Transformer 您可以使用javax.xml.transform.Transformer将表示XML片段的Str
我有一些小的
XML块,应该作为子元素嵌入到一个大的XML中.有没有办法将这些块写入XMLStreamWriter而不转义它们?
以下是处理此问题的几个选项:
选项#1 – 使用javax.xml.transform.Transformer 您可以使用javax.xml.transform.Transformer将表示XML片段的StreamSource转换为包装XMLStreamWriter的StAXResult. 选项#2 – 直接与OuputStream交互 或者,您可以执行以下操作.您可以利用flush()强制XMLStreamWriter输出其内容.然后你会注意到我执行xsw.writeCharacters(“”)这会强制start元素以bar结束,然后再将嵌套XML作为String写入.需要刷新下面的示例代码以正确处理编码问题. import java.io.*; import javax.xml.stream.*; public class Demo { public static void main(String[] args) throws Exception { OutputStream stream = System.out; XMLOutputFactory xof = XMLOutputFactory.newFactory(); XMLStreamWriter xsw = xof.createXMLStreamWriter(stream); xsw.writeStartDocument(); xsw.writeStartElement("foo"); xsw.writeStartElement("bar"); /* Following line is very important,without it unescaped data will appear inside the <bar> tag. */ xsw.writeCharacters(""); xsw.flush(); OutputStreamWriter osw = new OutputStreamWriter(stream); osw.write("<baz>Hello World<baz>"); osw.flush(); xsw.writeEndElement(); xsw.writeEndElement(); xsw.writeEndDocument(); xsw.close(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |