2012-04-02 19 views
6

Devo trasformare un DOMSource in un StreamSource, perché una libreria di terze parti accetta solo sorgenti di streaming per SOAP.Modo più semplice per trasformare un DOMSource in un StreamSource?

prestazioni non è tanto di un problema in questo caso, così sono venuto su con questo insieme terribilmente verboso di comandi:

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

non c'è un modo più semplice per fare questo?

risposta

6

Questo è il modo migliore. Poiché la tua libreria di terze parti accetta solo XML in forma lessicale, non hai altra alternativa che serializzare il DOM in modo che la libreria esterna possa ri-analizzarlo. Stupido design - dillo loro.

+1

"Loro"? Intendi sia Apache che Weblogic? :-) La cosa divertente è che la firma del metodo accetta qualsiasi 'Source', ma l'implementazione decompilata rifiuta tranquillamente tutto tranne 'StreamSource' ... –

Problemi correlati