Stefan Behnel schrieb:
> Robert Rawlins wrote:
>> Hello Guys,I have little to no experiance with element tree and I'm
>> struggling to find a way to parse the details from the XML document
>> (attached) into my application. Essentialy I'm looking to take the
>> following document and turn it into a dict of tuples, each dict element
>> defines a datasource with the key to the element being the 'name' which is
>> defined in the XML and then the value of the pair is a tuple which contains
>> the details of the datasource, like the host and port etc.I've attached a
>> copy of the example XML to this email.Can anyone offer some advice on how
>> to get started with this? I've spent a little time looking over the
>> documentation of element tree and have struggled to break the ice and parse
>> this document.Thanks guys,Robert
> 
> Given this document:
> 
> <?xml version="1.0" encoding="iso-8859-1"?>
> <!DOCTYPE datasources SYSTEM "datasources.dtd">
> <datasources>
>       <datasource>
>               <name>a name</name>
>               <host>localhost</host>
>               <port>3306</port>
>               <database>database1</database>
>               <username>someusername</username>
>               <password>somepassword</password>
>       </datasource>
>       <datasource>
>               <name>another name</name>
>               <host>localhost</host>
>               <port>3306</port>
>               <database>database2</database>
>               <username>itsusername</username>
>               <password>andthepassword</password>
>       </datasource>
> </datasources>
> 
> I would do something like this:
> 
>   d = {}
>   for event, element in ET.iterparse("thefile.xml"):
>       if element.tag == "datasource":
>           d[element.find("name")] = tuple([ el.text for el in element ])

Sorry, the last line should be

           d[element.findtext("name")] = tuple([ el.text for el in element ])

but you'll likely have to modify that line anyway.

Stefan
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to