2012-04-02 25 views
6

Tôi cần phải chuyển đổi một DOMSource thành một StreamSource, bởi vì thư viện của bên thứ ba chỉ chấp nhận nguồn luồng cho SOAP.Cách đơn giản để chuyển đổi một DOMSource thành một StreamSource?

Hiệu suất không phải là quá nhiều của một vấn đề trong trường hợp này, vì vậy tôi đã đưa ra bộ khủng khiếp tiết này các lệnh: không có

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

Là một cách đơn giản hơn để làm điều này?

Trả lời

6

Điều này cũng tốt như mọi cách. Bởi vì thư viện bên thứ ba của bạn chỉ chấp nhận XML dưới dạng từ vựng, bạn không có cách nào khác ngoài việc tuần tự hóa DOM để thư viện bên ngoài có thể phân tích lại nó. Thiết kế ngu ngốc - nói với họ như vậy.

+1

"Them"? Bạn có nghĩa là cả Apache và Weblogic? :-) Điều thú vị là, chữ ký phương thức chấp nhận bất kỳ 'Source' nào, nhưng việc thực thi được biên dịch lại lặng lẽ từ chối mọi thứ trừ' StreamSource' ... –

Các vấn đề liên quan