将DOMSource转换为StreamSource的更简单方法是什么?

6

我需要将一个DOMSource转换为StreamSource,因为一个第三方库只接受SOAP的流源。

在这种情况下,性能并不是很重要,所以我想出了以下可怕且冗长的命令:

DOMSource src = new DOMSource(document);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
StreamResult result = new StreamResult();
ByteArrayOutputStream out = new ByteArrayOutputStream();
result.setOutputStream(out);
transformer.transform(src, result);
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
StreamSource streamSource = new StreamSource(in);

有没有更简单的方法来做这个?
1个回答

6

这是一个不错的方法。因为你的第三方库只接受词法形式的XML,所以你别无选择,只能将DOM序列化,以便外部库可以重新解析它。这是一个愚蠢的设计 - 告诉他们吧。


1
“Them”? 你是指 Apache 和 Weblogic 都可以吗? :-) 好笑的是,这个方法签名可以接受任何 Source,但是反编译实现却悄悄地拒绝除了 StreamSource 以外的一切… - Lukas Eder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接