Know more about Python XML Parser

Python XML minidom and ElementTree module

The Python XML module support two sub-modules minidom and ElementTreeto parse an XML record in Python.

XML File

For every one of the models in this instructional exercise, we will utilize the demo.xmlfile, which contains the accompanying XML information:

<item>
<record>
<name>Jameson</name>
<phone>(080) 78168241</phone>
<email>cursus.in.hendrerit@ipsumdolor.edu</email>
<country>South Africa</country>
</record>

<record>
<name>Colton</name>
<phone>(026) 53458662</phone>
<email>non@idmagna.ca</email>
<country>Libya</country>
</record>

<record>
<name>Dillon</name>
<phone>(051) 96790901</phone>
<email>Aliquam.ornare@Etiamlaoreetlibero.ca</email>
<country>Madagascar</country>
</record>

<record>
<name>Channing</name>
<phone>(014) 98829753</phone>
<email>faucibus.Morbi.vehicula@aliquamarcu.co.uk</email>
<country>Korea, South</country>
</record>
</item>
  1. <phone>,
  2. <email>, and
  3. <country>

Parse/Read XML Document in Python using minidom

minidom is the submodule of the Python standard XML module, which means you do not have to pip install XML to use minidom.

from xml.dom import minidom  minidom.parse("filename")
from xml.dom import minidom


#parse xml file
file = minidom.parse('demo.xml')

#grab all <record> tags
records = file.getElementsByTagName("record")

print("Name------>Phone")

for record in records:
#access <name> and <phone> node of every record
name = record.getElementsByTagName("name")
phone = record.getElementsByTagName("phone")

#access data of name and phone
print(name[0].firstChild.data, end="----->")
print(phone[0].firstChild.data)
Name------>Phone
Jameson----->(080) 78168241
Colton----->(026) 53458662
Dillon----->(051) 96790901
Channing----->(014) 98829753

Parse/Read XML Document in Python Using ElementTree

The ElementTree module gives a basic and direct approach to parse and peruse XML documents in Python. As minidom is the submodule of xml.dom, the ElementTree is the submodule of xml.etree.

import xml.etree.ElementTree as ET 

ET.parse('file_name.xml')
import xml.etree.ElementTree as ET

tree = ET.parse('demo.xml')

#get root branch <item>
item = tree.getroot()


#loop through all <record> of <item>
for record in item.findall("record"):
email = record.find("email").text
country = record.find("country").text
print(f"Email: {email},-------->Country:{country}")
Email: cursus.in.hendrerit@ipsumdolor.edu,-------->Country:South Africa
Email: non@idmagna.ca,-------->Country:Libya
Email: Aliquam.ornare@Etiamlaoreetlibero.ca,-------->Country:Madagascar
Email: faucibus.Morbi.vehicula@aliquamarcu.co.uk,-------->Country:Korea, South

Conclusion

That summarizes this tutorial on Python XML Parser. As should be obvious, Python gives an inbuild Standard XML module to peruse and parse XML records in Python. It by and large has 2 submodules that can parse an XML document:

  • ElementTree

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store