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'] >>> >>

