如何将a javax.xml.transform.Source
转换为InputStream?的实现Source
是javax.xml.transform.dom.DOMSource
。
Source inputSource = messageContext.getRequest().getPayloadSource();
首先尝试将其转换为javax.xml.transform.stream.StreamSource
。如果成功,则可以访问基础InputStream
或Reader
通过getter。这将是最简单的方法。
如果向下转换失败,您可以尝试使用javax.xml.transform.Transformer
将其转换为javax.xml.transform.stream.StreamResult
已使用设置的java.io.ByteArrayOutputStream
。然后您返回一个java.io.ByteArrayInputStream
。就像是:
变压器t = // getTransformer(); ByteArrayOutputStream os = new ByteArrayOutputStream(); 结果结果=新的StreamResult(os); t.transform(inputSource,result); 返回新的ByteArrayInputStream(os.getByteArray());
当然,如果StreamSource
可以是大型文档,则不建议这样做。在这种情况下,您可以使用一个临时文件和java.io.FileOutputStream
/ java.io.FileInputStram
。另一个选择是生成一个转换器线程并通过java.io.PipedOutputStream
/进行通信java.io.PipedInputStream
,但这更加复杂:
PipedInputStream是= new PipedInputStream(); PipedOutputStream os = new PipedOutputStream(is); 结果结果=新的StreamResult(os); //这将创建并启动一个线程,该线程将创建一个转换器 //并将其应用于方法参数。 spawnTransformerThread(inputSource,result); 返回是
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句