2012-04-02 14 views
6

मुझे DOMSource को StreamSource में बदलने की आवश्यकता है, क्योंकि एक तृतीय-पक्ष लाइब्रेरी केवल SOAP के लिए स्ट्रीम स्रोत स्वीकार करती है।एक DOMSource को स्ट्रीमसोर्स में बदलने के लिए सरल तरीका?

प्रदर्शन इस मामले में एक मुद्दे के इतना नहीं है, इसलिए मैं आदेशों की इस बुरी वर्बोज़ सेट के साथ आया था:

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

यह किसी भी तरह से अच्छा है। चूंकि आपकी तीसरी पार्टी लाइब्रेरी केवल एक्सएमएल को लेक्सिकल रूप में स्वीकार करती है, इसलिए आपके पास डीओएम को क्रमबद्ध करने के अलावा कोई विकल्प नहीं है ताकि बाहरी लाइब्रेरी इसे फिर से पार्स कर सके। बेवकूफ डिजाइन - उन्हें बताओ।

+1

"उन्हें"? आप अपाचे और वेबलॉग दोनों का मतलब है? :-) मजाकिया बात यह है कि विधि हस्ताक्षर किसी भी 'स्रोत' को स्वीकार करता है, लेकिन अपूर्ण कार्यान्वयन चुपचाप सबकुछ अस्वीकार करता है लेकिन 'स्ट्रीमसोर्स' ... –

संबंधित मुद्दे