2012-04-02 80 views
6

我需要将DOMSource转换为StreamSource,因为第三方库只接受SOAP的流源。将DOMSource转换为StreamSource的更简单方法?

性能与其说是在这种情况下的一个问题,所以我想出了这个可怕的冗长的命令集:

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

是不是有一个更简单的方法来做到这一点?

回答

6

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

+1

“他们”?你的意思是Apache和Weblogic? :-)有趣的是,方法签名接受任何'Source',但反编译的实现静静地拒绝除了'StreamSource'之外的所有内容...... – 2012-04-02 20:05:19

相关问题