How to fetch XML data in python?

XML stands for Extensible Markup language. now I am going to show you how to fetch XML data using python programming.

Here I will show your extracting data from XML with an easy example.

First, I will have to create an XML file (student.xml)which contains some information data, that data going to be fetched by python code.



<college type="engineering">
<student branch="CSE">
   <name>raj</name>
   <rollno>201610231</rollno>
   <address>patna</address>
</student>

<student branch="IT">
   <name>prakash</name>
   <rollno>201610331</rollno>
   <address>Odisha</address>
</student>
</college>

now to fetch the data we have to import a package in python :

import xml.sax

xml.sax package provides various module for simple API for XML (SAX) .
now for parsing XMl, there is a requirement of ContentHandler. which is used to handle the particular tags and attributes of XML.

The make_parser Method

the make_parser method is used to create an xmlReader to read the data from the xml file.

xml.sax.make_parser([list])

list: consisting of a list of a parser.

now we also used another method for creating a SAX parser and uses to parse a document:

xml.sax.parse(xmlfile,contenthandler,errorhandler)

Arguments details:
xmlfile:name of XML file.
contenthandler: Object of the content handler.
errorhandler: SAX error handler.

python code for fetching XML data ( using class and functions )

import xml.sax

class Students( xml.sax.ContentHandler ):
   def _init_(self):
      self.CurrentData = ""
      self.name = ""
      self.rollno = ""
      self.address = ""
    
   
   def startElement(self, tag, attributes):
      self.CurrentData = tag
      if tag == "college":
              print "___________________Student Details_____________________"
              branch = attributes["branch"]
              print("Branch=", branch)

   
   def endElement(self, tag):
      if self.CurrentData == "name":
         print("Name=", self.name)
      elif self.CurrentData == "rollno":
         print("Roll Number=", self.rollno)
      elif self.CurrentData == "address":
         print("Address=", self.address)
      self.CurrentData = ""

  
   def characters(self, content):
      if self.CurrentData == "name":
         self.name = content
      elif self.CurrentData == "rollno":
         self.rollno = content
      elif self.CurrentData == "address":
         self.address = content
  
if ( _name_ == "_main_"):
   
   # create an XMLReader to read the data from xml file.
   parser = xml.sax.make_parser()
   parser.setFeature(xml.sax.handler.feature_namespaces, 0)
   #Object of Students class.
   H= Students()
   parser.setContentHandler(H)
   parser.parse("student.xml")

Output:

_________________student Details_________________
Branch=CSE
Name=raj
Roll Number=201610231
Address=patna
_________________student Details_________________
Branch=IT
Name=prakash
Roll Number=201610331
Address=odisha

You may also read,

Leave a Reply

Your email address will not be published. Required fields are marked *