pyxml2dict is an open source python library, which used for converting xml to python dict
pyxml2dict is licensed under the GPL-3.0
Prefix the attribute in the dictionary @attribute , the value corresponding to key is #text
Install with pip:
$pip install pyxml2dict
from pyxml2dict import XML2Dict
if __name__ == '__main__':
xml_str1 = """<root id="1"><items><item>1</item><item>2</item></items></root>"""
xml_str2 = """<root id="1"><age>20</age><items><item id="0">1</item><item>2</item></items></root>"""
xml2dict = XML2Dict()
print xml2dict.fromstring(xml_str1)
print xml2dict.fromstring(xml_str2)
#if you want namespace to be removed then:
xml_str3 = """<root id="1" xmlns="somenamespace"><items><item>1</item><item>2</item></items></root>"""
print xml2dict.fromstring(xml_str3)
print xml2dict.fromstring(xml_str3, remove_namespace=True)
print result
{'root': {'items': {'item': ['1', '2']}, '@id': '1'}}
{'root': {'items': {'item': [{'#text': '1', '@id': '0'}, '2']}, 'age': '20', '@id': '1'}}
{'{somenamespace}root': {'@id': '1', '{somenamespace}items': {'{somenamespace}item': ['1', '2']}}}
{'root': {'items': {'item': ['1', '2']}, '@id': '1'}}
In XML2Dict , _parse_node algorithm comes from https://github.com/undefine1995/xml2dict, It's very useful. Thanks for undefine1994.