2012-04-02 19 views
6

サードパーティのライブラリはSOAPのストリームソースのみを受け入れるため、をStreamSourceに変換する必要があります。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'以外のすべてを拒否します。 –

関連する問題