2010-09-14 15 views

उत्तर

10

सबसे पहले javax.xml.transform.stream.StreamSource पर डाउनकास्ट करने का प्रयास करें। यदि यह सफल होता है तो आपको गेटर्स के माध्यम से अंतर्निहित InputStream या Reader तक पहुंच प्राप्त होती है। यह सबसे आसान तरीका होगा।

यदि डाउनकास्टिंग विफल रहता है, तो आप javax.xml.transform.Transformer का उपयोग javax.xml.transform.stream.StreamResult में बदलने के लिए कर सकते हैं जो java.io.ByteArrayOutputStream के साथ स्थापित किया गया है। फिर आप java.io.ByteArrayInputStream लौटाते हैं। की तरह कुछ:

 
Transformer t = // getTransformer(); 
ByteArrayOutputStream os = new ByteArrayOutputStream(); 
Result result = new StreamResult(os); 
t.transform(inputSource, result); 
return new ByteArrayInputStream(os.getByteArray()); 

बेशक, StreamSource एक बड़े दस्तावेज़ हो सकता है, यह सलाह दी जाती है। उस स्थिति में, आप एक अस्थायी फ़ाइल और java.io.FileOutputStream/java.io.FileInputStram का उपयोग कर सकते हैं। एक और विकल्प एक ट्रांसफार्मर थ्रेड को बढ़ावा देना और java.io.PipedOutputStream/java.io.PipedInputStream के माध्यम से संवाद करना होगा, लेकिन यह अधिक जटिल है:

 
PipedInputStream is = new PipedInputStream(); 
PipedOutputStream os = new PipedOutputStream(is); 
Result result = new StreamResult(os); 
// This creates and starts a thread that creates a transformer 
// and applies it to the method parameters. 
spawnTransformerThread(inputSource, result); 
return is; 
0

यह सामान्य रूप से संभव है जब तक यह StreamSource या अन्य implementations करने के लिए नीचे के casted किया जा सकता है नहीं है,।

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