2012-07-02 20 views
12

मुझे पता है कि एक्सएमएल SAX पार्सर के बीच अंतर क्या चाहते पार्सर और डोम पार्सर खींचो, एंड्रॉयड में खींचो पार्सर & डोम पार्सर। किस स्थिति में, प्रदर्शन और कार्यान्वयन में कौन सा बेहतर है?अंतर, में एंड्रॉयड

Thanx। खोबाइब।

उत्तर

1

यह एक प्रोग्रामिंग सवाल नहीं है, लेकिन वैसे भी आप SAX parser vs XMLPull parser

मैं पोस्ट करने से पहले अधिक शोध कर सुझाव को देखकर शुरू कर सकते हैं।

11

सैक्स पार्सर: नोड के लिए एक्सएमएल पार्स नोड के सरल API, ऊपर से नीचे traversing का उपयोग कर, प्रविष्टि या हटाए जाने का नोड के डोम से छेड़छाड़ करने की अनुमति दी है की तुलना में तेजी से एक्सएमएल, संग्रह किए बिना पार्स। जरूरत SAXParserFactory

डोम पार्सर: दस्तावेज़ ऑब्जेक्ट मॉडल स्टोर पूरे एक्सएमएल स्मृति में संसाधन के पहले किसी भी दिशा में पार, प्रविष्टि या हटाए जाने का नोड के जोड़ तोड़ की अनुमति नहीं है। दस्तावेज़बिल्डर फ़ैक्टरी

पुल पार्सर: यह उपर्युक्त दो से अधिक नियंत्रण और गति प्रदान करता है। PullParserFactory

+2

क्या यह सैक्स और डोम के साथ नहीं है? सैम केवल एक पार्सर होने पर सम्मिलन और हटाना अनुमति देता है? संदर्भ: http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html – Benjamin

+1

हे, व्यवस्थापक, कृपया उत्तर के अनुसार जवाब संपादित करें (क्योंकि इस के पास सबसे अधिक वोट हैं) टिप्पणी: डीओएम ** ** नोड्स डालने/हटाने की अनुमति देता है, जबकि SAX ** ** – radistao

+0

सक्स कैसे खींचने से तेज है? खींचने के लिए, आप पढ़ने के दौरान पार्सिंग को भी रोक सकते हैं, इसलिए इसका मतलब है कि यदि आवश्यक हो तो आप कम काम कर सकते हैं ... –

0

प्रदर्शन के रूप में, SAX आमतौर पर बहुत कम स्मृति का उपयोग करेगा। और आप केवल उन्हीं घटनाओं को संभालते हैं जिन्हें आप चाहते हैं, उदा। startElement(), startDocument(), endElement(), इत्यादि, और इस प्रकार आप केवल इच्छित विशिष्ट डेटा को ही सहेज लेंगे। डोम पूरी एक्सएमएल फाइल को स्मृति में लोड करेगा।

27

डोम पार्सर - यह वस्तु आधारित दृष्टिकोण का उपयोग करता। यानी, यह पहले स्मृति में संपूर्ण एक्सएमएल लोड करता है, एक्सएमएल नोड्स को ऑब्जेक्ट्स में परिवर्तित करता है और फिर उन्हें पार्स करना शुरू कर देता है। तो, यह बहुत धीमी है।

SAX और पुल पार्सर - वे घटना आधारित दृष्टिकोण का उपयोग करें। स्मृति और प्रदर्शन के मामले में दोनों लगभग समान हैं। हालांकि नीचे वर्णित अनुसार उनका उपयोग करने के लिए कुछ विशिष्ट स्थितियां हैं।

डोम पार्सर - इसका इस्तेमाल जब आप पार्स करने से पहले सत्यापित करें पूरे एक्सएमएल की जरूरत है। एक्सएमएल बहुत बड़ा होने पर कभी भी इसका उपयोग न करें और सत्यापन से समझौता किया जा सकता है। एक बार यह पार्सिंग शुरू हो जाने के बाद, यह नोड को समाप्त करने के लिए नोड शुरू करने से पार्स करता है। केवल विशेष नोड्स को पार्स करने का कोई तरीका नहीं है।

SAX - जब आप संपूर्ण एक्सएमएल को पार्स करना चाहते हैं तो इसका इस्तेमाल करें। एक बार यह पार्सिंग शुरू हो जाने के बाद, यह नोड को समाप्त करने के लिए नोड शुरू करने से पार्स करता है। केवल विशेष नोड्स को पार्स करने का कोई तरीका नहीं है।

पुल - जब आप संपूर्ण एक्सएमएल को पार्स नहीं करना चाहते हैं तो इसका इस्तेमाल करें।SAX से कार्यान्वित करना आसान है, क्योंकि आपको अपने पार्सर की स्थिति को बनाए रखने की आवश्यकता नहीं है। आप केवल एक विशेष नोड खींच सकते हैं जिसमें आप रुचि रखते हैं।

मेरे सुझाव है - सत्यापन की आवश्यकता - डोम के लिए जाओ, फ़ाइल का आकार छोटे है या आप PULL के लिए जाओ पूरे XML- की पार्स करने में दिलचस्पी नहीं कर रहे हैं, फ़ाइल का आकार है बड़े या आप पूरे एक्सएमएल फ़ाइल को पार्स करने की जरूरत है - के लिए जाओ SAX

+0

SAX को स्वयं बंद टैग के साथ समस्या है http://stackoverflow.com/questions/2707531/trouble-parsing-self- समापन-एक्सएमएल टैग का इस्तेमाल करने वाली-सैक्स-पार्सर – vuhung3990