Open In App

Adding Data into Existing XML File in Python

Last Updated : 26 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

We are given an XML existing file and our task is to append new data into that existing XML using Python. In this article, we will see how we can append new data to the existing XML using Python.

Creating an XML file

In this example, an XML tree is constructed using the xml.etree.ElementTree module in Python, where child elements with attributes and text are added to the root element. Finally, the tree is written to a file named “sample.xml”. We will use this file in our article for further operations.

Python3
import xml.etree.ElementTree as ET

# Create the root element
root = ET.Element("data")

# Create a child element with attributes
item = ET.SubElement(root, "item")
item.attrib["id"] = "1"
item.text = "Item 1"

# Create another child element
item = ET.SubElement(root, "item")
item.attrib["id"] = "2"
item.text = "Item 2"

# Create the tree and write it to a file
tree = ET.ElementTree(root)
tree.write("sample.xml")

Output: sample.xml

Capture

sample.xml

Adding Data into Existing XML File in Python

Below are some of the ways by which we can add new data into the existing XML file in Python:

  1. Using ElementTree
  2. Using lxml library
  3. Using xml.dom.minidom

Adding Data into Existing XML Using ElementTree

In this example, the script loads an XML file, adds a new item with an ID and text, then saves the modified XML back to the file using ElementTree in Python.

Python3
import xml.etree.ElementTree as ET

# Load the existing XML file
tree = ET.parse("sample.xml")
root = tree.getroot()

# Append new data
new_item = ET.SubElement(root, "item")
new_item.attrib["id"] = "3"
new_item.text = "Item 3"

# Save the changes back to the file
tree.write("sample.xml")

Output: sample.xml

Capture

Adding Data into Existing XML Using lxml library

In this example, the script utilizes the lxml library to parse an XML file, adds a new item with an ID and text, then saves the modified XML back to the file with formatting.

Python3
from lxml import etree

# Load the existing XML file
tree = etree.parse("sample.xml")
root = tree.getroot()

# Append new data
new_item = etree.SubElement(root, "item")
new_item.attrib["id"] = "3"
new_item.text = "Item 3"

# Save the changes back to the file
tree.write("sample.xml", pretty_print=True)

Output: sample.xml

Capture

Adding Data into Existing XML Using xml.dom.minidom

In this example, using the xml.dom.minidom module, the script loads an XML file, adds a new item with an ID and text, then saves the modified XML back to the file.

Python3
import xml.dom.minidom

# Load the existing XML file
doc = xml.dom.minidom.parse("sample.xml")
root = doc.documentElement

# Append new data
new_item = doc.createElement("item")
new_item.setAttribute("id", "3")
text_node = doc.createTextNode("Item 3")
new_item.appendChild(text_node)
root.appendChild(new_item)

# Save the changes back to the file
with open("sample.xml", "w") as file:
    doc.writexml(file)

Output: sample.xml

Capture

Conclusion

The provided code snippets demonstrate different approaches to appending data to an existing XML file in Python. Whether using the built-in ElementTree module, the lxml library, or xml.dom.minidom, each method achieves the same goal with slight variations in syntax and functionality. These examples offer flexibility for developers to choose the XML manipulation method that best suits their project requirements and preferences.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads