Building and Parsing XML Document using Python

Reading Time : ~ .

In this Blog Post, We will see how to create an XML document and parse XML Document using python.

Python supports to work with various forms of structured data markup. This includes modules to work with the Hypertext Markup Language (HTML), Extensible Markup Language (XML).

In addition to parsing capabilities, xml.etree.ElementTree supports creating well-formed XML documents from Element objects constructed in an application. The Element class used when a document is parsed also knows how to generate a serialized form of its contents, which can then be written to a file.

Creating an XML Document:

To create an element instance, use the Element constructor or the SubElement() factory function.

import xml.etree.ElementTree as xml

filename = "/home/abc/Desktop/test_xml.xml"
root = xml.Element("Users")
userelement = xml.Element("user")
root.append(userelement)

When you run this you can see the output as below:

<Users>
    <user>
    </user>
</Users>

Let us add user children

uid = xml.SubElement(userelement, "uid")
uid.text = "1"
FirstName = xml.SubElement(userelement, "FirstName")
FirstName.text = "testuser"
LastName = xml.SubElement(userelement, "LastName")
LastName.text = "testuser"
Email = xml.SubElement(userelement, "Email")
Email.text = "testuser@test.com"
state = xml.SubElement(userelement, "state")
state.text = "xyz"
location = xml.SubElement(userelement, "location")
location.text = "abc"
tree = xml.ElementTree(root)
with open(filename, "w") as fh:
    tree.write(fh)


First we create the root element by using ElmeentTree’s Element function. Then we create an user element and append it to the root. Next we create SubElements by passing the user Element object (userelement) to SubElement along with a name, like "FirstName". Then for each SubElement, we set its text property to give it a value. At the end of the script, we create an ElementTree and use it to write the XML out to a file.
 
If you run this the reponse will be as following

<Users>
    <user>
        <uid>1</uid>
        <FirstName>testuser</FirstName>
        <LastName>testuser</LastName>
        <Email>testuser@test.com</Email>
        <state>xyz</state>
        <location>abc</location>
    </user>
</Users>

Parsing the XML Document:

import xml.etree.ElementTree as ET
tree = ET.parse('Your_XML_file_path')
root = tree.getroot()

here getroot() will return the root Element of the XML document.

<Users version="1.0" language="SPA">
    <user>
        <uid>1</uid>
        <FirstName>testuser</FirstName>
        <LastName>testuser</LastName>
        <Email>testuser@test.com</Email>
        <state>xyz</state>
        <location>abc</location>
    </user>
</Users>

Let us take above example for parsing.

here getroot() will return "Users" Element as "<Element 'Users' at 0x7f9095365d90>"

root.tag --> This returns only the Tag, Here in our Example "Users".
root.attrib --> This returns the attributes of the root element, In our Example "{'version': '1.0', 'language': 'SPA'}"
root.getchildren() --> This Returns the children elements of that root in an array.
In our Example: [<Element 'uid' at 0x7f0c307eee10>, <Element 'FirstName' at 0x7f0c307eeed0>, <Element 'LastName' at 0x7f0c307eef90>, <Element 'Email' at 0x7f0c307f0150>, <Element 'state' at 0x7f0c307f0190>, <Element 'location' at 0x7f0c307f01d0>].

From this you can read the text of the required Element and then insert in to your database.

    By Posted On
SENIOR DEVELOPER at MICROPYRAMID

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
python class special methods or magic methods Anjaneyulu Batta

python class special methods or magic methods. magic methods allow us to override or add the default functionality of python objects. One of the biggest ...

Continue Reading...
Integrate Twitter Social API into Django App Swetha Naretla

Integrating Twitter sign in (OAuth) in Django App, which includes
1. Capturing username via Twitter Login
2. Updating authenticated user current status on twitter(tweets).

Continue Reading...
Programming with python: Decorators Ashwin Kumar

Python decorators supports aspect-oriented programming. It is used to add or modify code in functions or classes. Using decorators will provide security, tracing, looking ..etc ...

Continue Reading...

Subscribe To our news letter

Subscribe to our news letter to receive latest blog posts into your inbox. Please fill your email address in the below form.
*We don't provide your email contact details to any third parties