Adding Data into Existing XML File in Python
Last Updated :
26 Mar, 2024
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
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:
- Using ElementTree
- Using lxml library
- 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
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
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
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.
Share your thoughts in the comments
Please Login to comment...