मुख्य अंतर यह है कि पहला आपको InputStream
इंटरफ़ेस के कार्यान्वयन के आधार पर केवल बाइनरी स्रोतों से आपकी XML सामग्री को पढ़ने की अनुमति देता है। अर्थात्: एक फ़ाइल से सीधे (Socket.getInputStream()
से) एक खुले सॉकेट (एक FileInputStream
का प्रयोग करके), आदि
दूसरा एक, DocumentBuilder.parse(InputSource)
, आप द्विआधारी स्रोतों भी से डेटा (यह, है एक InputStream
impl) को पढ़ने के लिए अनुमति देता है और चरित्र स्रोतों से (Reader
कार्यान्वयन)। तो, इस के साथ आप एक एक्सएमएल स्ट्रिंग का उपयोग कर सकते हैं (StringReader
का उपयोग करके), या BufferedReader
।
दूसरी विधि के साथ आपको पहले से ही InputStreams
को संभालने का मौका मिला है, पहला एक शॉर्टकट है, इसलिए जब आपके पास InputStream
है तो आपको एक नया InputSource
बनाने की आवश्यकता नहीं है। वास्तव में, InputStream
विधि का स्रोत कोड है:
public Document parse(InputStream is)
throws SAXException, IOException {
if (is == null) {
throw new IllegalArgumentException("InputStream cannot be null");
}
InputSource in = new InputSource(is);
return parse(in);
}
स्रोत
2010-11-23 15:18:35
मैंने अपनी पोस्ट को सही किया है। आप लिख रहे हैं, मेरा मतलब इनपुट स्रोत था। मेरे पास पहले से स्ट्रिंग में एक वैध XML स्ट्रिंग है, और मैं यह तय नहीं कर सका कि कौन सा दृष्टिकोण बेहतर है, यानी इसे इनपुटस्ट्रीम या इनपुट स्रोत में परिवर्तित करें। मैंने http://www.ibm.com/developerworks/xml/library/x-tipsaxis.html में पढ़ा है कि इनपुटस्ट्रीम के साथ, चरित्र एन्कोडिंग स्वयं स्ट्रीम से पता चला है, जबकि इनपुट स्रोत के साथ, आपको इसे सेट करना चाहिए और वह अगर एन्कोडिंग सेट वास्तव में स्ट्रिंग में उपयोग किया गया एन्कोडिंग नहीं है, तो मैं विश्लेषण कर रहा हूं, और मैं सोच रहा था कि अतिरिक्त सूक्ष्मताएं हैं, मुझे अवगत होना चाहिए – Cratylus
आपके मामले में, मैं इनपुट स्रोत का उपयोग करूंगा, क्योंकि आपके पास पहले से एक्सएमएल है स्ट्रिंग serialized। एन्कोडिंग सेट करने के लिए, मैं इनपुट स्रोत के "setEncoding" विधि का उपयोग करूंगा। –
अजीब। आपके द्वारा स्रोत कोड के रूप में पोस्ट किया गया कोड एन्कोडिंग के बारे में लेख (मेरी पिछली टिप्पणी से) के अनुरूप नहीं है। क्योंकि अगर यह पार्स (इनपुट) का कार्यान्वयन है तो लेख में उल्लिखित एन्कोडिंग कार्यक्षमता के बारे में गलत है। या मुझे कुछ याद आ रहा है? – Cratylus