2012-04-02 39 views
6

我需要將DOMSource轉換爲StreamSource,因爲第三方庫只接受SOAP的流源。將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'之外的所有內容...... – 2012-04-02 20:05:19

相關問題