6

मैं एक ऐसा एप्लिकेशन विकसित कर रहा हूं जिसमें पहली बार मैं दूरस्थ सर्वर से आने वाली किसी XML फ़ाइल से डेटा पार्स करने जा रहा हूं।एंड्रॉइड: XML डेटा को पार्स करने के लिए सर्वश्रेष्ठ पार्सर

लेकिन मैं यह चुनने में सक्षम नहीं हूं कि कौन सा पार्सर कुशल है या पार्सिंग के लिए सबसे उपयुक्त है।

  1. SAX
  2. XMLPullParsing
  3. डोम

कौन सा सबसे अच्छा पार्सर डेटा पार्स करने के लिए है: मुख्य रूप से पार्स के तीन प्रकार है, जो मुझे पता है देखते हैं के रूप में? जैसा कि मैंने Google पर खोज की थी और उपर्युक्त पार्सर्स के दोनों तरफ सकारात्मक और नकारात्मक पाया। लेकिन मैं यह निर्धारित करने में सक्षम नहीं था कि सबसे कुशल कौन सा है।

एक्सएमएल में कई टैग के साथ भारी डेटा है।

कृपया मुझे मार्गदर्शन करें और मुझे बताएं कि मुझे कौन सा पार्सर उपयोग करना चाहिए क्योंकि मैं पहली बार अपने आवेदन में पार्सिंग का उपयोग कर रहा हूं।

+0

sax या xmlpullparsing का उपयोग करें। – Raghunandan

+1

यदि फ़ाइल का आकार उचित है, तो डोम आज़माएं। यदि यह कोर में फिट नहीं होगा, तो सैक्स का उपयोग करें। हमें अपनी स्कीमा दिखाएं और हमें बताएं कि आप –

+0

डेटा के साथ किस प्रकार की सामग्री कर रहे हैं, यदि भारी डेटा के लिए अच्छा है तो कृपया sax मतलब है लेकिन कृपया मुझे xmlpullparser के बारे में बताएं। Sax और xmlpull के बीच सबसे अच्छा। –

उत्तर

9

में पढ़ दोनों पक्षों

http://www.firstobject.com/xml-reader-sax-vs-xml-pull-parser.htm

को विपक्ष और सुविधाओं से पता चलता सभी एक्सएमएल पार्सर के सैक्स पार्सर में सबसे तेज़ है ताकि आप इसमें कोई संदेह न कर सकें .... यदि आपको एक्सएमएल से डेटा पढ़ने और लिखने की ज़रूरत है तो आप डोम के लिए जा सकते हैं। SAX पार्सर का उपयोग करके आप केवल एक्सएमएल से डेटा को पढ़ने में सक्षम होंगे। चूंकि ये दोनों सूची के शीर्ष पर हैं, इसलिए आपको XMLPullparser के बारे में सोचने की आवश्यकता नहीं है।

+0

क्षमा करें लेकिन SAX पार्सर के पास स्वयं बंद टैग के साथ समस्या है, क्या आपके पास इसे हल करने का कोई समाधान है? – vuhung3990

18

एसएक्स पार्सिंग डीओएम से लागू करने के लिए सबसे अच्छा है। निम्नलिखित में इन दोनों के बीच अंतर देखें:

डोम:

  • नोड्स ट्री संरचना के रूप में कर रहे हैं।
  • मेमोरी: यह अधिक मेमोरी पर कब्जा करता है, डीओएम केवल छोटे एक्सएमएल दस्तावेजों के मामले में preffered है।
  • रनटाइम पर धीमा।
  • वस्तुओं के रूप में संग्रहीत।
  • प्रोग्रामेटिक रूप से कार्यान्वित करने में आसान है।
  • नेविगेशन और उपयोग की आसानी।

SAX:

  • घटनाओं के अनुक्रम।
  • यह बड़े दस्तावेज़ों के लिए पसंदीदा स्मृति का उपयोग नहीं करता है। उपरोक्त बिंदु के कारण
  • रनटाइम पर तेज़।
  • ऑब्जेक्ट्स बनाए जाने हैं।
  • वस्तुओं को बनाने के लिए कोड लिखने की आवश्यकता है।
  • SAX में पिछड़ा नेविगेशन संभव नहीं है क्योंकि यह अनुक्रमिक रूप से दस्तावेज़ को संसाधित करता है।
+2

+1। यह एक उत्कृष्ट तुलना है। मैं जोर देउंगा कि SAX को कार्यान्वित करना अधिक कठिन है क्योंकि प्रोग्रामर को नोड्स के माध्यम से कदम उठाना होगा। लेकिन, यह तेज़ है, कम स्मृति का उपयोग करता है, और यह बड़े एक्सएमएल डेटा सेट या एक्सएमएल डेटा स्ट्रीमिंग के लिए काफी बेहतर है। –

+0

बिल्कुल दोस्त। :) –

1

मैं XMLPullParsing कहूंगा, लेकिन मैंने हाल ही में Xerces के बारे में अच्छी चीजें सुनाई है, जो शायद उसमें भी देखना चाहें। हालांकि, कभी भी Xerces और XMLPullParser का उपयोग कभी नहीं किया है। हम एक रंगीन अंधेरे ऐप का निर्माण करते हैं जिसने इसका इस्तेमाल किया और यह आपको यह बताने के लिए हजारों रंगीन कॉम्बो खींचता है कि आपने किस रंग का चित्र लिया है।

अद्यतन: यहाँ कुछ लिंक यदि आप मन पढ़ने न पढ़ने के लिए: पी, इसके अलावा हो सकता है के लिए एक और जवाब SAX parser vs XMLPull parser

0

मुझे लगता है कि XMLPullParser एक अच्छा विकल्प होगा जैसा कि उन्होंने Android documentation में उल्लेख किया है।

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