我是javax.xml.transform.Transformer的新手.
我在XML文档上应用XSLT,它工作正常.
我想要实现的是能够将该转换的输出写入OutputStream.
这是我的代码:
OutputStream outputStream = null;
InputStream agent = new FileInputStream("src/res/testxmlfile.xml");
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource("src/res/trans.xslt"));
transformer.transform(new StreamSource(agent), outputStream ????????);
我知道它可以用来写这样的文件,但我想把它写成一个OutputStream对象.
transformer.transform(new StreamSource(agent),
new StreamResult(new FileOutputStream("/result.xml")));
如何传递OutputStream来在这里使用?
这是我在传递Outputstream时遇到的错误:
Exception in thread "main" javax.xml.transform.TransformerException:
Result object passed to ''{0}'' is invalid.
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl
.getoutputHandler(TransformerImpl.java:468)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl
.transform(TransformerImpl.java:344)
at com.gohealth.TestXmlStream.main(TestXmlStream.java:75)
解决方法:
使用StreamResult.它提供了构造函数来写入File或OutputStream:
使用文件的示例:
transformer.transform(new StreamSource(agent), new StreamResult(file));
使用FileOutputStream的示例:
FileOutputStream outputStream = new FileOutputStream(new File("outputfile.xml"));
transformer.transform(new StreamSource(agent), new StreamResult(outputStream));
使用ByteArrayOutputStream的示例:
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
transformer.transform(new StreamSource(agent), new StreamResult(outputStream));
byte[] bytes = outputStream.toByteArray();`
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。