SAX इवेंट-संचालित XML पार्सिंग के लिए एक मानक इंटरफ़ेस है। XML को SAX के साथ पार्स करने के लिए आम तौर पर आपको xml.sax.ContentHandler को उपवर्गित करके अपना स्वयं का ContentHandler बनाने की आवश्यकता होती है।
आपका कंटेंटहैंडलर एक्सएमएल के आपके स्वाद के विशेष टैग और विशेषताओं को संभालता है। ContentHandler ऑब्जेक्ट विभिन्न पार्सिंग ईवेंट को संभालने के तरीके प्रदान करता है। इसका मालिक पार्सर कंटेंटहैंडलर विधियों को कॉल करता है क्योंकि यह एक्सएमएल फ़ाइल को पार्स करता है।
XML फ़ाइल के प्रारंभ और अंत में startDocument और endDocument विधियों को कहा जाता है। विधि वर्ण (पाठ) XML फ़ाइल के वर्ण डेटा को पैरामीटर पाठ के माध्यम से पारित किया जाता है।
ContentHandler को प्रत्येक तत्व के प्रारंभ और अंत में बुलाया जाता है। यदि पार्सर नेमस्पेस मोड में नहीं है, तो स्टार्ट एलिमेंट (टैग, एट्रीब्यूट्स) और एंड एलीमेंट (टैग) विधियों को कहा जाता है; अन्यथा, संबंधित विधियों को startElementNS और endElementNS कहा जाता है। यहाँ, टैग तत्व टैग है, और विशेषताएँ एक विशेषता वस्तु है।
आगे बढ़ने से पहले समझने के लिए अन्य महत्वपूर्ण तरीके यहां दिए गए हैं -
मेक_पार्सर विधि
निम्नलिखित विधि एक नया पार्सर ऑब्जेक्ट बनाती है और उसे वापस कर देती है। बनाया गया पार्सर ऑब्जेक्ट सिस्टम द्वारा खोजे गए पहले पार्सर प्रकार का होगा।
xml.sax.make_parser( [parser_list] )
यहाँ मापदंडों का विवरण दिया गया है -
- पार्सर_सूची - वैकल्पिक तर्क में उपयोग करने के लिए पार्सर्स की एक सूची शामिल है, जो सभी को make_parser विधि को लागू करना चाहिए।
पार्स विधि
निम्नलिखित विधि एक SAX पार्सर बनाती है और इसका उपयोग किसी दस्तावेज़ को पार्स करने के लिए करती है।
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
यहाँ मापदंडों का विवरण दिया गया है -
- xmlफ़ाइल - यह पढ़ने के लिए एक्सएमएल फ़ाइल का नाम है।
- कंटेंटहैंडलर - यह एक कंटेंटहैंडलर ऑब्जेक्ट होना चाहिए।
- एररहैंडलर - यदि निर्दिष्ट किया गया है, तो त्रुटि हैंडलर एक SAX ErrorHandler ऑब्जेक्ट होना चाहिए।
पार्सस्ट्रिंग विधि
SAX पार्सर बनाने और निर्दिष्ट XML स्ट्रिंग . को पार्स करने का एक और तरीका है ।
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
यहाँ मापदंडों का विवरण दिया गया है -
- xmlstring - यह पढ़ने के लिए एक्सएमएल स्ट्रिंग का नाम है।
- कंटेंटहैंडलर - यह एक कंटेंटहैंडलर ऑब्जेक्ट होना चाहिए।
- एररहैंडलर - यदि निर्दिष्ट किया गया है, तो त्रुटि हैंडलर एक SAX ErrorHandler ऑब्जेक्ट होना चाहिए।
उदाहरण
#!/usr/bin/python import xml.sax class MovieHandler( xml.sax.ContentHandler ): def __init__(self): self.CurrentData = "" self.type = "" self.format = "" self.year = "" self.rating = "" self.stars = "" self.description = "" # Call when an element starts def startElement(self, tag, attributes): self.CurrentData = tag if tag == "movie": print "*****Movie*****" title = attributes["title"] print "Title:", title # Call when an elements ends def endElement(self, tag): if self.CurrentData == "type": print "Type:", self.type elif self.CurrentData == "format": print "Format:", self.format elif self.CurrentData == "year": print "Year:", self.year elif self.CurrentData == "rating": print "Rating:", self.rating elif self.CurrentData == "stars": print "Stars:", self.stars elif self.CurrentData == "description": print "Description:", self.description self.CurrentData = "" # Call when a character is read def characters(self, content): if self.CurrentData == "type": self.type = content elif self.CurrentData == "format": self.format = content elif self.CurrentData == "year": self.year = content elif self.CurrentData == "rating": self.rating = content elif self.CurrentData == "stars": self.stars = content elif self.CurrentData == "description": self.description = content if ( __name__ == "__main__"): # create an XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) # override the default ContextHandler Handler = MovieHandler() parser.setContentHandler( Handler ) parser.parse("movies.xml")
यह निम्नलिखित परिणाम देगा -
*****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Year: 2003 Rating: PG Stars: 10 Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Year: 1989 Rating: R Stars: 8 Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Stars: 10 Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Stars: 2 Description: Viewable boredom
SAX API दस्तावेज़ीकरण पर पूर्ण विवरण के लिए, कृपया मानक Python SAX API देखें।