我是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();`