2012-04-02 13 views
6

Bir üçüncü taraf kitaplığı yalnızca SOAP için akış kaynaklarını kabul ettiğinden, DOMSource'u StreamSource'a dönüştürmem gerekiyor.DOMSource'ı StreamSource'a dönüştürmenin daha basit yolu?

Performans bu durumda bir sorun çok değil, yani komutları bu korkunç ayrıntılı set ile geldi: Bunu yapmanın basit bir yolu

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

yok mu?

cevap

6

Bu, herhangi bir şekilde iyi bir yoldur. Üçüncü parti kitaplığınız yalnızca XML biçiminde sözcük kabul ettiğinden, başka bir alternatifiniz yoktur, ancak DOM'yi serileştirmek için dış kütüphane onu yeniden ayrıştırabilir. Aptal tasarım - bunları söyle.

+1

"Them"? Hem Apache hem de Weblogic demek istiyorsun? :-) Komik olan, yöntem imzasının herhangi bir "Kaynak" ı kabul etmesidir, ancak dekompoze uygulama sessizce her şeyi reddeder ama "StreamSource" ... –

İlgili konular