如何将javax.xml.transform.Source转换为InputStream?

克里斯托弗·克莱威斯(Christopher Klewes):

如何将a javax.xml.transform.Source转换为InputStream?的实现Sourcejavax.xml.transform.dom.DOMSource

Source inputSource = messageContext.getRequest().getPayloadSource();
gpeche:

首先尝试将其转换为javax.xml.transform.stream.StreamSource如果成功,则可以访问基础InputStreamReader通过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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章