XML Parser's
Introduction to XML Parser in Hindi
एक parser बहुत ही basic और important tool होता है। हर XML application parser पर based होती है। Parser एक software component होता है जो XML document और application (Ex. Browser) के बीच में होता है। Parser programmer को XML syntax की complexity से बचाता है। Parser XML file के syntax को validate करता है।
Parser के द्वारा आप XML document के data को access और modify कर सकते है। Parser को आप एक software library की तरह देख सकते है जो आपको XML document के साथ work करने के लिए methods provide करती है।
XML के कुछ parser’s के नाम निचे दिए जा रहे है। इनमें DOM और SAX parser सबसे popular है।
- DOM
- SAX
- JDOM
- STAX
- XPATH
- DOM4J
Validating and Non-validating Parser’s
XML parser’s को 2 categories में divide किया गया है। Non-validating parser’s वो parser होते है जो Syntax rules को validate कर सकते है लेकिन DTD validate करने की ability उनमें नहीं होती है।
Validating parser’s वो parser होते है जो syntax rules को validate करने के साथ DTD को भी validate करते है।
जैसा की मैने पिछली एक tutorial में बताया था की XML documents well-formed और valid 2 तरह के होते है। Well formed documents सिर्फ syntax को follow करते है जबकि valid documents syntax को follow करने के साथ Document को DTD के according structure करते है।
Non-validating parser हर तरह के document को well-formed document की तरह देखता है। क्योंकि इस तरह के parser में DTD को validate करने की ability नहीं होती है। यदि कोई valid document parse भी किया जाये तो non-validating parser सिर्फ उसका syntax ही validate करते है।
चाहे document well-formed हो या valid दोनों ही cases में validating parser easily काम करता है।
Working of Parser and Application
Parser XML file को validate करता है। जैसे की parser check करता है की XML document का syntax ठीक है या नहीं। इसके बाद यदि document valid है तो parser DTD को भी validate करता है। Document के validate होने के बाद parser application को interface provide करता है जिसके द्वारा application XML file के data को extract करती है। Parser के द्वारा provide किये गए interface 2 तरह के हो सकते है।
- Object based interface - इस तरह के interface में parser Objects का एक tree बनाता है जिसमे XML file के सभी elements होते है। ये सबसे simple interface होता है क्योंकि ये memory में एक tree होता है जो hard disk पर किसी file को represent करता है।
- Event based interface - Event based interface बहुत powerful होता है। ज्यादतर programmers इसे ही यूज़ करते है। Event based interface में parser tree create करने के बजाय file को read करता है और जैसे ही कोई element या attribute आता है तो event generate करता है। इस तरह के interface में element start, element end, attributes और text content के लिए events generate किये जाते है।
Different XML Parser’s
DOM (Document Object Model) Parser
DOM का मतलब document object model होता है। ये parser complete XML document का representation memory में build करता है। और जब किसी program को उसकी जरुरत होती है तो उसे पूरी memory सौंप देता है। DOM बहुत ज्यादा memory यूज़ करता है। ये memory nodes में relationship build करने के कारण occupy होती है। DOM को बहुत ही complicated माना जाता है। इसको बहुत से programming languages के साथ implement किया गया है लेकिन ये same ही interface provide करता है।
SAX (Simple API for XML) Parser
SAX का मतलब Simple API for XML होता है। इस parser की विशेषता ये होती है की ये XML को unit by unit read करता है और events create करता है जो application यूज़ कर सकती है। इससे application जो data जरुरी नहीं है उसे ignore कर देती है और जिस data पर events create किये गए है उसी पर focus करती है। ये एक push parser है क्योंकि ये events को application की तरफ push करता है।
इस parser की disadvantage ये होती है की calling application को जिस data की जरुरत होती है उसे उसको track करके रखना पड़ता है। SAX को ज्यादातर बड़े XML documents के लिए यूज़ किया जाता हैं जँहा पर memory document की size से कम हो।
SAX parser के कई implementation आ चुके है। जैसे की crimson and xerces आदि।
Pull Parser
Pull parser application के लिए wait करता है। जैसे ही application call करती है ये next available event को find करता है। और जब तक की XML file का end नहीं आ जाता है application loop चलाती है। Pull parser streaming applications के लिए useful होता है जँहा पर data या तो बहुत ज्यादा बड़ा है या फिर data को next stage के लिए prepare किया जा रहा है। इसे large data resources के साथ work करने के लिए यूज़ किया जाता है। SAX parser सभी events को return करता है लेकिन pull parser चाहे तो events को skip भी कर सकता है।