I did look at that Bruno, but some of the articles I read suggested that it
is not very memory efficient?

Chris
On Sep 19, 2011 3:44 PM, "Bruno Rocha" <[email protected]> wrote:
> I use xml minidom and it is easier.
>
> http://zerp.ly/rochacbruno
> Em 19/09/2011 11:40, "Chris Rowson" <[email protected]>
escreveu:
>> Thank you Michele,
>>
>> Chris
>>
>> On Mon, Sep 19, 2011 at 2:00 PM, Michele Comitini
>> <[email protected]> wrote:
>>> There is nothing wrong with your code. Maybe it is better to use
>>> find() to get the <geo> tag.
>>> If you have an XSD schema you can use generateDS
>>> http://www.rexx.com/~dkuhlman/generateDS.html
>>> to have a python parser.
>>>
>>> But if you can use the JSON API... much simpler.
>>>
>>> mic
>>>
>>>
>>> 2011/9/19 Chris Rowson <[email protected]>:
>>>> Anybody using xml.etree?
>>>>
>>>> I asked this question over at the Python tutors group but it seems
>>>> that few people there had experience of it.
>>>>
>>>> I'm trying to access a UK postcode API at www.uk-postcodes.com to take
>>>> a UK postcode and return the lat/lng of the postcode. This is what the
>>>> XML looks like: http://www.uk-postcodes.com/postcode/HU11AA.xml
>>>>
>>>> The function below returns a dict with the xml tag as a key and the
>>>> text as a value. Is this a correct way to use xml.etree? Is there a
>>>> better way of doing this?
>>>>
>>>> Thanks in advance!
>>>>
>>>> Chris
>>>>
>>>>
>>>> def ukpostcodesapi(postcode):
>>>> import urllib
>>>> import xml.etree.ElementTree as etree
>>>>
>>>> baseURL='http://www.uk-postcodes.com/'
>>>> geocodeRequest='postcode/'+postcode+'.xml'
>>>>
>>>> #grab the xml
>>>> tree=etree.parse(urllib.urlopen(baseURL+geocodeRequest))
>>>> root=tree.getroot()
>>>> results={}
>>>> for child in root[1]: #here's the geo tag
>>>> results.update({child.tag:child.text}) #build a dict
>>>> containing the geocode data
>>>> return results
>>>>
>>>> #example usage (testing the function)
>>>> results = ukpostcodesapi('hu11aa')
>>>> print results['lat']+' '+results['lng']
>>>>
>>>

Reply via email to