How to Parse and Modify XML in Python?
Last Updated :
21 Apr, 2020
XML stands for Extensible Markup Language. It was designed to store and transport data. It was designed to be both human- and machine-readable. That’s why, the design goals of XML emphasize simplicity, generality, and usability across the Internet.
Note: For more information, refer to
XML | Basics
Here we consider that the XML file is present in the memory. Please read the comments in the code for a clear understanding.
XML File:

Let us save the above XML file as
"test.xml". Before going further you should know that
in XML we do not have predefined tags as we have in HTML. While writing XML the
author has to define his/her own tags as well as the document structure. Now we need to parse this file and modify it using Python. We will be using
"minidom" library of
Python 3 to do the above task. This module does not come built-in with Python. To install this type the below command in the terminal.
pip install minidom
Reading XML
First we will be reading the contents of the XML file and then we will learn how to modify the XML file.
Example
Python3 1==
import xml.dom.minidom as md
def main():
# parsing the xml file and
# storing the contents in
# "file" object Put in the
# path of your XML file in
# the parameter for parse() method.
file = md.parse( "test.xml" )
# nodeName returns the type of
# the file(in our case it returns
# document)
print( file.nodeName )
# firstChild.tagName returns the
# name of the first tag.Here it
# is "note"
print( file.firstChild.tagName )
firstname = file.getElementsByTagName( "fname" )
# printing the first name
print( "Name: " + firstname[ 0 ].firstChild.nodeValue )
lastname = file.getElementsByTagName( "lname" )
# printing the last name
print( "Surname: " + lastname[ 0 ].firstChild.nodeValue )
favgame = file.getElementsByTagName( "favgame" )
# printing the favourite game
print( "Favourite Game: " + favgame[ 0 ].firstChild.nodeValue )
# Printing tag values having
# attributes(Here tag "player"
# has "name" attribute)
players = file.getElementsByTagName( "player" )
for player in players:
print( player.getAttribute( "name" ) )
if __name__=="__main__":
main();
Output:
#document
note
Name: Jack
Surname: Shelby
Favourite Game: Football
Messi
Ronaldo
Mbappe
In the above Python code while printing
First Name or
Last Name we have used
firstname[0] / lastname[0]. This is because there is only 1
"fname" and only 1
"lname" tag. For
multiple same tags we can proceed like below.
XML:
Python
Python3 1==
import xml.dom.minidom as md
def main():
file = md.parse( "test.xml" )
names = file.getElementsByTagName( "fname" )
for name in names:
print( name.firstChild.nodeValue )
if __name__=="__main__":
main();
Output
Jack
John
Harry
Modifying XML
Now we have got a basic idea on how we can parse and read the contents of a XML file using Python. Now let us learn to
modify an XML file.
XML File:

Let us
add the following :
- Height
- Languages known by Jack
Let us
delete the
"hobby" tag. Also let us
modify the
age to
29.
Python Code:(Modifying XML)
Python3 1==
import xml.dom.minidom as md
def main():
file = md.parse("test.xml")
height = file.createElement( "height" )
# setting height value to 180cm
height.setAttribute("val", "180 cm")
# adding height tag to the "file"
# object
file.firstChild.appendChild(height)
lan = [ "English", "Spanish", "French" ]
# creating separate "lang" tags for
# each language and adding it to
# "file" object
for l in lan:
lang = file.createElement( "lang" )
lang.setAttribute( "lng", l )
file.firstChild.appendChild( lang )
delete = file.getElementsByTagName( "hobby" )
# deleting all occurences of a particular
# tag(here "hobby")
for i in delete:
x = i.parentNode
x.removeChild( i )
# modifying the value of a tag(here "age")
file.getElementsByTagName( "age" )[ 0 ].childNodes[ 0 ].nodeValue = "29"
# writing the changes in "file" object to
# the "test.xml" file
with open( "test.xml", "w" ) as fs:
fs.write( file.toxml() )
fs.close()
if __name__=="__main__":
main();
Output:

The last 3 lines of the Python code just converts the
"file" object into XML using the
toxml() method and writes it to the
"test.xml" file. If you do not want to edit the original file and just want to print the modified XML then
replace those 3 lines by:
print(file.toxml())
Similar Reads
Python Tutorial | Learn Python Programming Language
Python Tutorial â Python is one of the most popular programming languages. Itâs simple to use, packed with features and supported by a wide range of libraries and frameworks. Its clean syntax makes it beginner-friendly.Python is:A high-level language, used in web development, data science, automatio
10 min read
Python Interview Questions and Answers
Python is the most used language in top companies such as Intel, IBM, NASA, Pixar, Netflix, Facebook, JP Morgan Chase, Spotify and many more because of its simplicity and powerful libraries. To crack their Online Assessment and Interview Rounds as a Python developer, we need to master important Pyth
15+ min read
Non-linear Components
In electrical circuits, Non-linear Components are electronic devices that need an external power source to operate actively. Non-Linear Components are those that are changed with respect to the voltage and current. Elements that do not follow ohm's law are called Non-linear Components. Non-linear Co
11 min read
Python OOPs Concepts
Object Oriented Programming is a fundamental concept in Python, empowering developers to build modular, maintainable, and scalable applications. By understanding the core OOP principles (classes, objects, inheritance, encapsulation, polymorphism, and abstraction), programmers can leverage the full p
11 min read
Python Projects - Beginner to Advanced
Python is one of the most popular programming languages due to its simplicity, versatility, and supportive community. Whether youâre a beginner eager to learn the basics or an experienced programmer looking to challenge your skills, there are countless Python projects to help you grow.Hereâs a list
10 min read
Python Exercise with Practice Questions and Solutions
Python Exercise for Beginner: Practice makes perfect in everything, and this is especially true when learning Python. If you're a beginner, regularly practicing Python exercises will build your confidence and sharpen your skills. To help you improve, try these Python exercises with solutions to test
9 min read
Class Diagram | Unified Modeling Language (UML)
A UML class diagram is a visual tool that represents the structure of a system by showing its classes, attributes, methods, and the relationships between them. It helps everyone involved in a projectâlike developers and designersâunderstand how the system is organized and how its components interact
12 min read
Python Programs
Practice with Python program examples is always a good choice to scale up your logical understanding and programming skills and this article will provide you with the best sets of Python code examples.The below Python section contains a wide collection of Python programming examples. These Python co
11 min read
Spring Boot Tutorial
Spring Boot is a Java framework that makes it easier to create and run Java applications. It simplifies the configuration and setup process, allowing developers to focus more on writing code for their applications. This Spring Boot Tutorial is a comprehensive guide that covers both basic and advance
10 min read
Enumerate() in Python
enumerate() function adds a counter to each item in a list or other iterable. It turns the iterable into something we can loop through, where each item comes with its number (starting from 0 by default). We can also turn it into a list of (number, item) pairs using list().Let's look at a simple exam
3 min read