Need to parse python dictionaries into xml
Stefan Behnel
stefan_ml at behnel.de
Wed Jun 16 15:56:54 EDT 2010
abhijeet thatte, 16.06.2010 20:41:
> On Wed, Jun 16, 2010 at 10:57 AM, Stefan Behnel wrote:
>> You should start by writing down the XML structure that you want to build
>> for the above dict. That will make it clear what needs to be done.
>
> /*****************************************************************************************/
>
> I need an xml file structure as below:
> <chipsim>
> <#>
> <name>sh2a</name>
> <size>32</size>
> <bus_width>4</bus_width>
> <#><PIF>
> <name>PIF</name>
> <offset>4</offset>
> <name_of_peer_string>new_string</name_of_peer_string>
> </PIF>
> <#><interrupt_tree>
> <name>Interrupt_tree</name>
> <#><tree_level_0>
> <name>MX</name>
> <offset>32</offset>
> <bit_position>1</bit_position>
> <type>INTR</type>
> <hi_mask_def>0000</hi_mask_def>
> <lo_mask_def>0000</lo_mask_def>
> <#><tree_level_1>
> <name>RRPR</name>
> <offset>928</offset>
> <bit_position>0</bit_position>
> <type>INTR</type>
> <hi_mask_def>0000</hi_mask_def>
> <lo_mask_def>0000</lo_mask_def>
> </tree_level_1>
> </tree_level_0>
> </interrupt_tree>
> </chipsim>
> //**************************************************************************************/
>
> This is a very small part of the actual output I need.
> Dicts which I am creating looks like =
> {'chipsim':{'name':sh2a,'size':32,'bus_width':'4','PIF':{'name':'PIF','offseet':'4','name_of_peer_string':'new_string'},'interrupt_tree':{'tree_level_0':{'tree_level_1':{.....}}}}}
Now, that really makes it clear what you want. You can try this:
import xml.etree.ElementTree as ET
def to_xml_elements(d):
elements = []
# run through all items in the dict
for name, value in d.items():
element = ET.Element(name)
if isinstance(value, dict):
# this is a sub-dict => inject its content recursively
element[:] = to_xml_elements(value)
else:
# normal value => insert as string value
value_element = ET.Element(key)
value_element.text = str(value)
element.append(value_element)
# return list of elements that were created from the dict
return elements
> I guess ElementTree is the best way to go about it. But have not found a
> good reference on how to use it.
There's lots of info on the web. Start at the effbot site:
http://effbot.org/zone/element-index.htm
Stefan
More information about the Python-list
mailing list