By continuing to navigate on this website, you accept the use of cookies to serve you more relevant services & content.
For more information and to change the setting of cookies on your computer, please read our Cookie Policy.

Building and Parsing XML Document using Python

While developing a web Application in most cases we need to build and parse XML document using Python.

So, 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 XML, xml.etree.ElementTree used for creating well-formed documents from Element objects 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:

For creating element instance, we need to use Element constructor or subelement() To create an element instance 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. For creating SubElement we will use Element object as first argument and name as second argument.. Then for each SubElement, we set its text property to give it a value.
 
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.

To Know more about our Django CRM(Customer Relationship Management) Open Source Package. Check Code

    Posted On
  • 23 January 2017
  • By
  • Micropyramid

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
WSGI explanation with simple APP

The main goal of WSGI is to facilitate easy interconnection of servers and web frameworks/applications. WSGI defines a standerd API for web servers(uWSGI, Twisted, Gunicorn) ...

Continue Reading...
Publishing Python Modules with PIP via PyPi

We'll install so many packages in our day to day python development. Now in this blog post, we'll try to know how to create our ...

Continue Reading...
Programming with python Descriptors (_get_, _set_, _delete_) - MicroPyramid

Python descriptors are object attributes that are only invoked for new style of classes. Python descriptors comes under the category of meta programming(code that manipulates ...

Continue Reading...
open source packages

Subscribe To our news letter

Subscribe and Stay Updated about our Webinars, news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
* We don't provide your email contact details to any third parties