2012-04-02 11 views
6

Muszę przekształcić DOMSource w StreamSource, ponieważ biblioteka innych firm akceptuje tylko źródła strumieniowe dla SOAP.Prostszy sposób przekształcenia DOMSource w StreamSource?

wydajność nie jest tak wiele kwestii, w tym przypadku, więc wpadłem na pomysł z tym okropnie gadatliwym zestaw poleceń:

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

nie istnieje prostszy sposób to zrobić?

Odpowiedz

6

To jest tak samo dobry sposób jak każdy inny. Ponieważ twoja zewnętrzna biblioteka akceptuje tylko XML w leksykalnej formie, nie masz innego wyjścia, jak serializować DOM, aby biblioteka zewnętrzna mogła je ponownie przeanalizować. Głupi projekt - powiedz im to.

+1

"Je"? Masz na myśli Apache i Weblogic? :-) Najśmieszniejsze jest to, że sygnatura metody akceptuje dowolne 'Source', ale dekompilowana implementacja po cichu odrzuca wszystko oprócz' StreamSource' ... –

Powiązane problemy