Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में SAX APIs का उपयोग करके XML पार्सिंग


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 देखें।


  1. पायथन - किवी (Kivy) में बटन एक्शन पायथन - किवी (Kivy) में बटन एक्शन

    किवी (Kivy) अभिनव उपयोगकर्ता इंटरफेस वाले एप्लिकेशन के तेजी से विकास के लिए एक ओपन सोर्स पायथन लाइब्रेरी है, जैसे मल्टी-टच ऐप्स। इसका उपयोग एंड्रॉइड एप्लिकेशन के साथ-साथ डेस्कटॉप एप्लिकेशन विकसित करने के लिए किया जाता है। इस लेख में हम देखेंगे कि बटन दबाए जाने पर इवेंट्स का उपयोग कैसे करें। नीचे दि

  1. पायथन में इनहेरिटेंस (Inheritance) पायथन में इनहेरिटेंस (Inheritance)

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में इनहेरिटेंस और क्लासेस को एक्सटेंड करने के बारे में जानेंगे।इनहेरिटेंस वास्तविक दुनिया के संबंधों को अच्छी तरह से दर्शाता है, पुन: प्रयोज्यता प्रदान करता है और ट्रांजिटिविटी का समर्थन करता है। यह तेज़ विकास समय, आसान रखरखाव और विस्तार में आसानी प्र

  1. पायथन में XML पार्सिंग: ElementTree के साथ पायथन में XML पार्सिंग: ElementTree के साथ

    पायथन XML पार्सर XML फाइल से उपयोगी जानकारी पढ़ने और निकालने के सबसे आसान तरीकों में से एक प्रदान करता है। इस छोटे ट्यूटोरियल में हम देखेंगे कि कैसे हम पायथन ElementTree XML API का उपयोग करके XML फाइल को पार्स, संशोधित और बना सकते हैं। पायथन ElementTree API XML डेटा को निकालने, पार्स करने और ट्रांस