2012-01-17 10 views
8

मैं एसएक्स पार्सर का उपयोग कर एक्सएमएल दस्तावेज़ को पार्स कर रहा हूं।एंड्रॉइड: डीओएम बनाम एसएक्स बनाम XMLPullParser पार्सिंग?

मुझे पता है कि जो डोम, SAX पार्सर या XMLPullParser साथ काम करने के बेहतर और तेज है चाहता हूँ।

+0

[एंड्रॉइड: बेस्ट एक्सएमएल पार्सिंग लाइब्रेरी?] (Http://stackoverflow.com/questions/3926367/android-best-xml-parsing-library) –

+3

आपके पास सबसे अच्छा ट्यूटोरियल है [यहां] (http://totheriver.com/learn/xml/xmltutorial.html#5.4)। –

+0

अच्छा ट्यूटोरियल लिंक @LalitPoptani ......... – Lucifer

उत्तर

5

यह निर्भर करता है कि आप क्या कर रहे हैं, यदि आपके पास बहुत बड़ी फ़ाइलें हैं तो आपको SAX पार्सर का उपयोग करना चाहिए क्योंकि यह ईवेंट को आग लगाएगा और उन्हें जारी करेगा, स्मृति में कुछ भी संग्रहीत नहीं किया जाएगा, और SAX पार्सर का उपयोग करके आप तत्व तक नहीं पहुंच सकते एक यादृच्छिक तरीका वापस नहीं जा रहा है! , लेकिन डोम आपको xml फ़ाइल के किसी भी भाग तक पहुंचने देता है क्योंकि यह पूरी फ़ाइल/दस्तावेज़ को स्मृति में रखता है। उम्मीद है कि यह जवाब आप सवाल करते हैं।

अगर आप को पता है जो सबसे तेजी से पार्सर Xerces सबसे तेजी से आप मिल जाएगा और SAX पार्सर आप Dom

+0

मैं अपने पास XML दस्तावेज़ को पार्स करने का सबसे तेज़ तरीका ढूंढ रहा हूं। बड़ा दस्तावेज़ नहीं है। – Basbous

+0

@ बास्बस: SAX या XMLPullParser सबसे तेज़ हैं, लेकिन DOM _far_ का उपयोग करना आसान है। –

1

SAX एक्सएमएल पार्सर Android SDK में पहले से ही उपलब्ध की तुलना में अधिक प्रदर्शन देना चाहिए होने जा रहा है चाहता हूँ।

http://developer.android.com/reference/org/xml/sax/XMLReader.html

तो यह उपयोग करने के लिए आसान है।

+0

मैं पहले से ही सैक्स पार्सर का उपयोग कर रहा हूं लेकिन मैं पूछ रहा हूं कि क्या DOM या XMLPullParser तेज़ है ?? – Basbous

+0

है DOM SAX – Basbous

+0

से बेहतर है, यह उपयोग करना आसान है, लेकिन उपयोग करने में बहुत मुश्किल/कठिन है! –

1

एक पहलू जिसके द्वारा विभिन्न प्रकार के पार्सर्स को वर्गीकृत किया जा सकता है, क्या उन्हें पूरे एक्सएमएल दस्तावेज़ को मेमोरी अप में लोड करने की आवश्यकता है या नहीं। दस्तावेज़ ऑब्जेक्ट मॉडल (डीओएम) के आधार पर पार्सर्स ऐसा करते हैं: वे एक्सएमएल दस्तावेजों को पेड़ संरचना में पार्स करते हैं, जिसे बाद में अपनी सामग्री को पढ़ने के लिए स्मृति में उलटा जा सकता है। यह आपको मनमाने ढंग से किसी दस्तावेज़ को पार करने की अनुमति देता है, और कुछ उपयोगी एपीआई को जन्म देता है जिसे डीओएम के शीर्ष पर थप्पड़ मार दिया जा सकता है, जैसे XPath, पथ पथ भाषा जिसे विशेष रूप से पेड़ों से जानकारी निकालने के लिए डिज़ाइन किया गया है। अकेले डोम का उपयोग करना लाभ का अधिक नहीं है क्योंकि इसकी एपीआई घबराहट है और यदि आपको आवश्यकता नहीं है तो भी हमेशा स्मृति में सबकुछ पढ़ना महंगा होता है। इसलिए, ज्यादातर मामलों में, डोम पार्सर्स, एंड्रॉइड पर एक्सएमएल का विश्लेषण करने के लिए इष्टतम विकल्प नहीं हैं।

ऐसे पार्सर्स की श्रेणी हैं जिन्हें दस्तावेज़ को सामने लोड करने की आवश्यकता नहीं है। ये पार्सर्स स्ट्रीम-आधारित हैं, जिसका अर्थ है कि वे डेटा स्रोत (वेब ​​या डिस्क) से इसे पढ़ते समय एक XML दस्तावेज़ को संसाधित करते हैं। यह का तात्पर्य है कि आपके पास XML ट्री के साथ डीओएम के साथ यादृच्छिक पहुंच नहीं है क्योंकि दस्तावेज़ का कोई आंतरिक प्रतिनिधित्व नहीं किया जा रहा है। स्ट्रीम पार्सर्स को एक-दूसरे से अलग किया जा सकता है। पुश पार्सर्स है कि, दस्तावेज़ स्ट्रीम करते समय, एक नया तत्व सामना करते समय आपके एप्लिकेशन पर वापस कॉल करेगा। सैक्स पार्सर्स, इस कक्षा में आते हैं। फिर पुल पार्सर्स हैं, जो इटरेटर या कर्सर की तरह अधिक हैं: यहां क्लाइंट को अगले तत्व को पुनर्प्राप्त करने के लिए स्पष्ट रूप से पूछना चाहिए।

स्रोत: एंड्रॉइड इन प्रैक्टिस।

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