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

2024-04-12

我怎样才能转换javax.xml.transform.Source进入输入流?实施Source is javax.xml.transform.dom.DOMSource.

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

首先尝试向下javax.xml.transform.stream.StreamSource。如果成功,您就可以访问底层InputStream or Reader通过吸气剂。这将是最简单的方法。

如果向下转型失败,您可以尝试使用javax.xml.transform.Transformer将其转变为javax.xml.transform.stream.StreamResult已经设置了java.io.ByteArrayOutputStream。然后你返回一个java.io.ByteArrayInputStream。就像是:



Transformer t = // getTransformer();
ByteArrayOutputStream os = new ByteArrayOutputStream();
Result result = new StreamResult(os);
t.transform(inputSource, result);
return new ByteArrayInputStream(os.getByteArray());
  

当然,如果StreamSource可以是一个大文档,这是不可取的。在这种情况下,您可以使用临时文件并java.io.FileOutputStream/java.io.FileInputStram。另一种选择是生成一个变压器线程并通过java.io.PipedOutputStream/java.io.PipedInputStream,但这更复杂:



PipedInputStream is = new PipedInputStream();
PipedOutputStream os = new PipedOutputStream(is);
Result result = new StreamResult(os);
// This creates and starts a thread that creates a transformer
// and applies it to the method parameters.
spawnTransformerThread(inputSource, result);
return is;
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 javax.xml.transform.Source 转换为 InputStream? 的相关文章

随机推荐