How to convert xml content into json using xmltodict

Reading Time : ~ .

xmltodict is a python package which is used to convert XML data into JSON and vice versa.

Within a less span of time, we can also process large amounts of data and get the desired results.

Installation:

    pip install xmltodict

It supports both python2.7, 3.4 versions

Advantages over other packages:

    1. No need to process each node in XML document to get the results
    2. Easy to convert complex XML data into JSON
    3. It's user-friendly

Converting XML to a dictionary:

>>> import xmltodict

>>> import json

>>> json.loads(json.dumps(xmltodict.parse('''

     <root>

       <persons city="hyderabad">

         <person name="abc">

           <name age="50" mobile="789" />

         </person>

       </persons>

       <persons city="vizag">

            <username></username>

         <person name="xyz">

           <name age="70" mobile="123" />

         </person>

       </persons>

     </root>

     ''')))

{u'root': {u'persons': [{u'@city': u'hyderabad', u'person': {u'@name': u'abc', u'name': {u'@mobile': u'789', u'@age': u'50'}}}, {u'@city': u'vizag', u'person': {u'@name': u'xyz', u'name': {u'@mobile': u'123', u'@age': u'70'}}}]}}

Converting dictionary to XML:

>>> xmltodict.unparse({u'root': {u'persons': [{u'@city': u'hyderabad', u'person': {u'@name': u'abc', u'name': {u'@mobile': u'789', u'@age': u'50'}}}, {u'@city': u'vizag', u'person': {u'@name': u'xyz', u'name': {u'@mobile': u'123', u'@age': u'70'}}}]}}

)

u'<?xml version="1.0" encoding="utf-8"?>\n<root><persons city="hyderabad"><person name="abc"><name mobile="789" age="50"></name></person></persons><persons city="vizag"><person name="xyz"><name mobile="123" age="70"></name></person></persons></root>'

Text values for nodes can be specified with the `cdata_key` key in the python dict, while node properties can be specified with the `attr_prefix` prefixed to the key name in the python dict. The default value for `attr_prefix` is `@` and the default value for `cdata_key` is `#text`.


By passing `process_namespaces=True` will make it expand namespaces for xml data in json data.

>>> import xmltodict

>>> import json

>>> json.loads(json.dumps(xmltodict.parse('''

     <root>

       <persons city="hyderabad">

         <person name="abc">

           <name age="50" mobile="789" />

         </person>

       </persons>

       <persons city="vizag">

         <person name="xyz">

           <name age="70" mobile="123" />

         </person>

       </persons>

     </root>

     ''', process_namespaces=True)))

>>> mydict = {u'root': {u'persons': [{u'@city': u'hyderabad', u'person': {u'@name': u'abc', u'name': {u'@mobile': u'789', u'@age': u'50'}}}, {u'@city': u'vizag', u'person': {u'@name': u'xyz', u'name': {u'@mobile': u'123', u'@age': u'70'}}}]}}

>>> print xmltodict.unparse(mydict, pretty=True)
    By Posted On
SENIOR DEVELOPER at MICROPYRAMID

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
Securing Django with multi factor authentication using Django-MFA Vinisha Naladala

Use Django Multi-Factor Authentication method to verify user identity with more than one authentication methods. It can be used for user login, any transactional methods ...

Continue Reading...
How to index binary files in django haystack Ramya Ambati

Now we are going to index text content which is stored in structured files such as PDFs, Microsoft Office documents, images, etc using haystack and ...

Continue Reading...
How to Document API Requests using Django Rest Swagger Swetha Naretla

Django Rest Swagger is used to Document your API for eg., Listing all Your project Rest API's in the browser with brief description about the ...

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