BeautifulSoup is good for parsing XML.
>>> from bs4 import BeautifulSoup
>>> xml = urllib2.urlopen('http://freegeoip.net/xml/192.168.1.1').read()
>>> soup = BeautifulSoup(xml)
>>> soup.ip.text
u'192.168.1.1'
Or in more detail..
#!/usr/bin/env python
import urllib2
from bs4 import BeautifulSoup
ip = "192.168.1.1"
xml = urllib2.urlopen('http://freegeoip.net/xml/' + ip).read()
soup = BeautifulSoup(xml)
print "IP Address: %s" % soup.ip.text
print "Country Code: %s" % soup.countrycode.text
print "Country Name: %s" % soup.countryname.text
Output:
IP Address: 192.168.1.1
Country Code: RD
Country Name: Reserved
(updated to latest BeautifulSoup
version)