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
How to parse XML in Ruby?
XML - Extensible Markup Language is used format on the platform for exchanging data and storing data on the web. Ruby, consists of a huge number of libraries and its syntax is flexible does provides several methods for parsing XML documents easily. In this article, we will look into various methods
2 min read
How to convert lists to XML in Python?
In this article, the task is to convert a given list to XML in Python. But first, let's discuss what is an XML? It could also be terminology that defines a gaggle of rules for encoding documents during a format that's both human-readable and machine-readable. The design goals of XML specialize in si
3 min read
How to Parse Data From JSON into Python?
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write for machines to parse and generate. Basically it is used to represent data in a specified format to access and work with data easily. Here we will learn, how to create and parse data f
2 min read
Parsing XML with DOM APIs in Python
The Document Object Model (DOM) is a programming interface for HTML and XML(Extensible markup language) documents. It defines the logical structure of documents and the way a document is accessed and manipulated. Parsing XML with DOM APIs in python is pretty simple. For the purpose of example we wil
2 min read
How to parse local HTML file in Python?
Prerequisites: Beautifulsoup Parsing means dividing a file or input into pieces of information/data that can be stored for our personal use in the future. Sometimes, we need data from an existing file stored on our computers, parsing technique can be used in such cases. The parsing includes multiple
5 min read
Parse XML using Minidom in Python
DOM (document object model) is a cross-language API from W3C i.e. World Wide Web Consortium for accessing and modifying XML documents. Python enables you to parse XML files with the help of xml.dom.minidom, which is the minimal implementation of the DOM interface. It is simpler than the full DOM API
1 min read
Parse a YAML file in Python
YAML is the abbreviation of Yet Another Markup Language or YAML ain't markup Language which is the data format used to exchange data. YAML can store only data and no commands. It is similar to the XML and JSON data formats. In this article, we will dive deep into the concept of parsing YAML files in
4 min read
Modify XML files with Python
Python|Modifying/Parsing XMLÂ Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.The design goals of XML focus on simplicity, generality, and usability across the Internet.It is a textua
4 min read
html5lib and lxml parsers in Python
Parsers in Python: Parsing simply means to break down a blob of text into smaller and meaningful parts. This breaking down depends on certain rules and factors which a particular parser defines. These parsers can range from native string methods of parsing line by line to the libraries like html5lib
3 min read
How to Parse XML in JavaScript?
Parsing XML data is important because it allows JavaScript applications to extract structured information from XML documents. We will explore two different approaches to Parse XML in JavaScript. Below are the approaches to parsing XML in JavaScript: Table of Content Using DOM ParserUsing xml2js Libr
2 min read