trouble with minidom

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sat Jul 25 02:44:14 EDT 2009


En Fri, 24 Jul 2009 14:56:29 -0300, Ronn Ross <ronn.ross at gmail.com>  
escribió:
> On Tue, Jul 21, 2009 at 7:32 PM, Gabriel Genellina
> <gagsl-py2 at yahoo.com.ar>wrote:
>> En Tue, 21 Jul 2009 21:08:57 -0300, Ronn Ross <ronn.ross at gmail.com>
>> escribió:
>>
>>  Hello I'm trying to read an xml file using minidome. The xml looks  
>> like:
>>> <rootNode>
>>>   <project>
>>>      <name>myProj</name>
>>>      <path>/here/</path>
>>>   </project>
>>> </rootNode>
>
> I have used the loop below and it works great, but I need get both child
> elements or 'project' per iteration. I want to build a dictionary that
> resemble this:
> my_dict = {'myProj':'/here/', 'anothername':'anotherpath'}
>
> I couldn't find how to do with in the element tree docs. Can you point  
> me in
> the right direction?

py> import xml.etree.ElementTree as ET
py> xml = """<rootNode>
... <project>
...   <name>myProj</name>
...   <path>/here/</path>
... </project>
... <project>
...   <name>anothername</name>
...   <path>anotherpath</path>
... </project>
... </rootNode>"""
py> doc = ET.fromstring(xml)
py> result = {}
py> for project in doc.findall('project'):
...   name = project.find("name").text
...   path = project.find("path").text
...   result[name] = path
...
py> result
{'anothername': 'anotherpath', 'myProj': '/here/'}

The Element interface is documented here:
http://docs.python.org/library/xml.etree.elementtree.html#the-element-interface
More info in the author's site:
http://www.effbot.org/zone/element-index.htm

(Perhaps you're using Python 2.5? That part of the documentation was  
omited in the 2.5 doc set by mistake. Read the 2.6 docs instead, there was  
no changes)

-- 
Gabriel Genellina




More information about the Python-list mailing list