No hay que bajar nada, sólo usar el webservice. Un ejemplo de uso (hay muchas otras cosas que podés solicitar y parámetros a enviar, como dije, es sólo un ejemplo):
Código PHP:
<?php
if(isset($_GET['code'])){
header("Content-type:text/xml");
echo file_get_contents('http://ws.geonames.org/postalCodeSearch?postalcode='.$_GET['code'].'&country=ES&maxRows=10');
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
function AJAXCrearObjeto(){
var obj;
if(window.XMLHttpRequest) { // no es IE
obj = new XMLHttpRequest();
} else { // Es IE o no tiene el objeto
try {
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert('El navegador utilizado no está soportado');
}
}
return obj;
}
</script>
<script>
function leerDatos(){
if (oXML.readyState == 4) {
var xml = oXML.responseXML.documentElement;
var item=xml.getElementsByTagName('code');
p='';
for(ii=0;ii<item.length;ii++){
localidad=item[ii].getElementsByTagName('name')[0].firstChild.data;
cp=item[ii].getElementsByTagName('postalcode')[0].firstChild.data;
p+=localidad+'---'+cp+'<br>';
}
document.getElementById('c').innerHTML=p;
} else{
document.getElementById('c').innerHTML='cargando...';
}
}
</script>
<script>
function pedirDatos(codPos){
oXML=AJAXCrearObjeto();
oXML.open('GET', '?code='+escape(codPos),true);
oXML.onreadystatechange = leerDatos;
oXML.send('null');
}
</script>
</head>
<body>
<a href="javascript:pedirDatos(14012)">leer</a><br /><div id="c"></div>
</body>
</html>