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

पायथन में SAX API के साथ XML को पार्स करना

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


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

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

  1. पायथन में विरासत

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

  1. पायथन में एक्सएमएल पार्सिंग?

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