How to Create an XML File in Python: A Practical Example

In this example, we demonstrate how to create an XML file programmatically using Python. The code processes a list of dictionaries, where each dictionary represents a row of data, and converts it into a structured XML file. Here’s the step-by-step explanation:

Code Breakdown:


import xml.etree.ElementTree as ET

Step 1: Import the ElementTree module, which is used for building and processing XML data in Python.


# Data (representing the provided table)
data = [
    {"id": 1, "name": "John Deo", "class": "Four", "mark": 75, "gender": "female"},
    {"id": 2, "name": "Max Ruin", "class": "Three", "mark": 85, "gender": "male"},
    ...
]

Step 2: Define the data to be converted into XML. Here, the data is represented as a list of dictionaries, where each dictionary contains information about a student (e.g., ID, name, class, mark, and gender).


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

Step 3: Create the root element of the XML file using ET.Element(). In this case, the root element is <students>.


# Add data to the XML
for row in data:
    student = ET.SubElement(root, "student")
    for key, value in row.items():
        child = ET.SubElement(student, key)
        child.text = str(value)

Step 4: Iterate through each row of data. For each row:

  • Create a new child element <student> under the root element.
  • For each key-value pair in the dictionary, add a sub-element with the key as the tag and the value as the text.


# Generate the XML tree
tree = ET.ElementTree(root)

# Save the XML to a file
output_file = "students.xml"
tree.write(output_file, encoding="utf-8", xml_declaration=True)
print(f"XML file '{output_file}' created successfully!")

Step 5: Use ET.ElementTree to build the complete XML tree and save it to a file named students.xml. The encoding="utf-8" ensures the file supports international characters, and xml_declaration=True adds the XML declaration at the top of the file.

Sample XML Output:


<students>
    <student>
        <id>1</id>
        <name>John Deo</name>
        <class>Four</class>
        <mark>75</mark>
        <gender>female</gender>
    </student>
    <student>
        <id>2</id>
        <name>Max Ruin</name>
        <class>Three</class>
        <mark>85</mark>
        <gender>male</gender>
    </student>
    ...
</students>

Explanation of the Output:

  • The root element <students> contains multiple child elements <student>.
  • Each <student> element represents a row of data, with child elements for each attribute (e.g., <id>, <name>, etc.).
  • The structure makes it easy to store and access hierarchical data.

Use Cases:

  • Storing student records or similar hierarchical data in XML format.
  • Exporting data for applications or systems that require XML files.
  • Converting data from other formats (e.g., CSV, database rows) into XML.

This code demonstrates how Python simplifies the process of generating XML files for structured data. You can customize it further to suit your specific requirements.



import xml.etree.ElementTree as ET

# Data (representing the provided table)
data = [
    {"id": 1, "name": "John Deo", "class": "Four", "mark": 75, "gender": "female"},
    {"id": 2, "name": "Max Ruin", "class": "Three", "mark": 85, "gender": "male"},
    {"id": 3, "name": "Arnold", "class": "Three", "mark": 55, "gender": "male"},
    {"id": 4, "name": "Krish Star", "class": "Four", "mark": 60, "gender": "female"},
    {"id": 5, "name": "John Mike", "class": "Four", "mark": 60, "gender": "female"},
    {"id": 6, "name": "Alex John", "class": "Four", "mark": 55, "gender": "male"},
    {"id": 7, "name": "My John Rob", "class": "Fifth", "mark": 78, "gender": "male"},
    {"id": 8, "name": "Asruid", "class": "Five", "mark": 85, "gender": "male"},
    {"id": 9, "name": "Tes Qry", "class": "Six", "mark": 78, "gender": "male"},
    {"id": 10, "name": "Big John", "class": "Four", "mark": 55, "gender": "female"},
    {"id": 11, "name": "Ronald", "class": "Six", "mark": 89, "gender": "female"},
    {"id": 12, "name": "Recky", "class": "Six", "mark": 94, "gender": "female"},
    {"id": 13, "name": "Kty", "class": "Seven", "mark": 88, "gender": "female"},
    {"id": 14, "name": "Bigy", "class": "Seven", "mark": 88, "gender": "female"},
    {"id": 15, "name": "Tade Row", "class": "Four", "mark": 88, "gender": "male"},
    {"id": 16, "name": "Gimmy", "class": "Four", "mark": 88, "gender": "male"},
    {"id": 17, "name": "Tumyu", "class": "Six", "mark": 54, "gender": "male"},
    {"id": 18, "name": "Honny", "class": "Five", "mark": 75, "gender": "male"},
    {"id": 19, "name": "Tinny", "class": "Nine", "mark": 18, "gender": "male"},
    {"id": 20, "name": "Jackly", "class": "Nine", "mark": 65, "gender": "female"},
    {"id": 21, "name": "Babby John", "class": "Four", "mark": 69, "gender": "female"},
    {"id": 22, "name": "Reggid", "class": "Seven", "mark": 55, "gender": "female"},
    {"id": 23, "name": "Herod", "class": "Eight", "mark": 79, "gender": "male"},
    {"id": 24, "name": "Tiddy Now", "class": "Seven", "mark": 78, "gender": "male"},
    {"id": 25, "name": "Giff Tow", "class": "Seven", "mark": 88, "gender": "male"},
    {"id": 26, "name": "Crelea", "class": "Seven", "mark": 79, "gender": "male"},
    {"id": 27, "name": "Big Nose", "class": "Three", "mark": 81, "gender": "female"},
    {"id": 28, "name": "Rojj Base", "class": "Seven", "mark": 86, "gender": "female"},
    {"id": 29, "name": "Tess Played", "class": "Seven", "mark": 55, "gender": "male"},
    {"id": 30, "name": "Reppy Red", "class": "Six", "mark": 79, "gender": "female"},
    {"id": 31, "name": "Marry Toeey", "class": "Four", "mark": 88, "gender": "male"},
    {"id": 32, "name": "Binn Rott", "class": "Seven", "mark": 90, "gender": "female"},
    {"id": 33, "name": "Kenn Rein", "class": "Six", "mark": 96, "gender": "female"},
    {"id": 34, "name": "Gain Toe", "class": "Seven", "mark": 69, "gender": "male"},
    {"id": 35, "name": "Rows Noump", "class": "Six", "mark": 88, "gender": "female"},
]

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

# Add data to the XML
for row in data:
    student = ET.SubElement(root, "student")
    for key, value in row.items():
        child = ET.SubElement(student, key)
        child.text = str(value)

# Generate the XML tree
tree = ET.ElementTree(root)

# Save the XML to a file
output_file = "students.xml"
output_file = "F:\\testing\\sqlite\\" + output_file # Path to save file
tree.write(output_file, encoding="utf-8", xml_declaration=True)
print(f"XML file '{output_file}' created successfully!")

Subscribe to our YouTube Channel here


Subscribe

* indicates required
Subscribe to plus2net

    plus2net.com







    Python Video Tutorials
    Python SQLite Video Tutorials
    Python MySQL Video Tutorials
    Python Tkinter Video Tutorials
    We use cookies to improve your browsing experience. . Learn more
    HTML MySQL PHP JavaScript ASP Photoshop Articles FORUM . Contact us
    ©2000-2024 plus2net.com All rights reserved worldwide Privacy Policy Disclaimer