有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

xml Java Transformer:如何将其结果生成OutputStream?

我是新来的

我正在对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)

共 (2) 个答案

  1. # 1 楼答案

    使用StreamResult。它提供构造函数来写入FileOutputStream

    使用File的示例:

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