微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Transformer:如何将其结果转换为OutputStream?

我是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 举报,一经查实,本站将立刻删除。