SAX इवेंट-संचालित XML पार्सिंग के लिए एक मानक इंटरफ़ेस है। SAX के साथ XML पार्स करने के लिए आमतौर पर आपको xml.sax.ContentHandler को सबक्लास करके अपना खुद का ContentHandler बनाने की आवश्यकता होती है।
आपका ContentHandler आपके XML के स्वाद के विशेष टैग और विशेषताओं को संभालता है। एक ContentHandler ऑब्जेक्ट विभिन्न पार्सिंग घटनाओं को संभालने के तरीके प्रदान करता है। इसका स्वामित्व वाला पार्सर ContentHandler विधियों को कॉल करता है जैसे ही यह XML फ़ाइल को पार्स करता है।
startDocument और endDocument विधियों को XML फ़ाइल की शुरुआत और अंत में कॉल किया जाता है। characters(text) विधि को पैरामीटर text के माध्यम से XML फ़ाइल का कैरेक्टर डेटा पास किया जाता है।
ContentHandler को प्रत्येक तत्व की शुरुआत और अंत में कॉल किया जाता है। यदि पार्सर नेमस्पेस मोड में नहीं है, तो startElement(tag, attributes) और endElement(tag) विधियों को कॉल किया जाता है; अन्यथा, संबंधित startElementNS और endElementNS विधियों को कॉल किया जाता है। यहां, tag तत्व टैग है, और attributes एक Attributes ऑब्जेक्ट है।
आगे बढ़ने से पहले समझने के लिए यहां अन्य महत्वपूर्ण विधियां हैं -
make_parser विधि
निम्नलिखित विधि एक नया पार्सर ऑब्जेक्ट बनाती है और इसे लौटाती है। बनाया गया पार्सर ऑब्जेक्ट सिस्टम द्वारा पाए गए पहले पार्सर प्रकार का होगा।
xml.sax.make_parser( [parser_list] )
पैरामीटर्स का विवरण -
- parser_list - वैकल्पिक तर्क जिसमें पार्सर की सूची होती है जिनका उपयोग किया जाना चाहिए जो सभी make_parser विधि को लागू करते हैं।
parse विधि
निम्नलिखित विधि एक SAX पार्सर बनाती है और इसका उपयोग दस्तावेज़ को पार्स करने के लिए करती है।
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
पैरामीटर्स का विवरण -
- xmlfile - यह पढ़ने के लिए XML फ़ाइल का नाम है।
- contenthandler - यह एक ContentHandler ऑब्जेक्ट होना चाहिए।
- errorhandler - यदि निर्दिष्ट है, तो errorhandler एक SAX ErrorHandler ऑब्जेक्ट होना चाहिए।
parseString विधि
निर्दिष्ट XML स्ट्रिंग को पार्स करने के लिए SAX पार्सर बनाने का एक और तरीका है।
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
पैरामीटर्स का विवरण -
- xmlstring - यह पढ़ने के लिए XML स्ट्रिंग का नाम है।
- contenthandler - यह एक ContentHandler ऑब्जेक्ट होना चाहिए।
- errorhandler - यदि निर्दिष्ट है, तो errorhandler एक 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 = "" # जब कोई तत्व शुरू होता है तो कॉल किया जाता है def startElement(self, tag, attributes): self.CurrentData = tag if tag == "movie": print "*****Movie*****" title = attributes["title"] print "Title:", title # जब कोई तत्व समाप्त होता है तो कॉल किया जाता है 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 = "" # जब कोई कैरेक्टर पढ़ा जाता है तो कॉल किया जाता है 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__"): # एक XMLReader बनाएं parser = xml.sax.make_parser() # नेमस्पेस बंद करें parser.setFeature(xml.sax.handler.feature_namespaces, 0) # डिफ़ॉल्ट 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 दस्तावेज़ीकरण पर पूर्ण विवरण के लिए, कृपया मानक पायथन SAX APIs देखें।