2012-04-02 4 views
6

Ich muss eine DOMSource in eine StreamSource umwandeln, weil eine Drittanbieter-Bibliothek nur Stream-Quellen für SOAP akzeptiert.Einfachere Möglichkeit, eine DOMSource in eine StreamSource umzuwandeln?

Leistung ist nicht so sehr ein Problem in diesem Fall so kam ich mit diesem schrecklich ausführlichen Satz von Befehlen:

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

Gibt es nicht einen einfacheren Weg, dies zu tun?

Antwort

6

Dies ist so gut wie jeder andere. Da Ihre Drittanbieterbibliothek nur XML in lexikalischer Form akzeptiert, haben Sie keine Alternative, das DOM zu serialisieren, damit die externe Bibliothek es erneut analysieren kann. Dummes Design - sag es ihnen.

+1

"Sie"? Du meinst Apache und Weblogic? :-) Die lustige Sache ist, die Methodensignatur akzeptiert jede 'Quelle', aber die dekompilierte Implementierung lehnt stillschweigend alles außer 'StreamSource' ab ... –