Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/10/2018, 17:14
ion_sc
 
Fecha de Ingreso: mayo-2011
Ubicación: Navarra
Mensajes: 21
Antigüedad: 12 años, 11 meses
Puntos: 1
Leer XML de servidor remoto

Buenas noches,

Escribo aquí por que he buscado por internet alguna solución a mi problema y no he encontrado lo que buscaba.

He realizado una página para mostrar los datos de una estación meteorológica. La estación crea en un servidor externo al mío y en el cual no puedo realizar ninguna modificación, un XML cada minuto. El XML tiene la siguiente forma:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<current_observation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:noNamespaceSchemaLocation="http://www.weather.gov/view/current_observation.xsd">
<credit>Davis Instruments Corp.</credit>
<credit_URL>http://www.davisnet.com</credit_URL>
<disclaimer_url>http://www.davisnet.com/about/terms.asp</disclaimer_url>
<copyright_url>http://www.davisnet.com/about/terms.asp</copyright_url>
<privacy_policy_url>http://www.davisnet.com/about/privacy.asp</privacy_policy_url>
<image>
<url>
http://www.weatherlink.com/images/Logo_Davis_reflxblu.jpg
</url>
<title>Davis WeatherLink</title>
<link>http://www.weatherlink.com</link>
</image>
<suggested_pickup>15 minutes after the hour</suggested_pickup>
<suggested_pickup_period>60</suggested_pickup_period>
<dewpoint_c>3.9</dewpoint_c>
<dewpoint_f>39.0</dewpoint_f>
....

en la página que he creado hasta el momento, estaba trabajando con una copia del XML en local y estaba leyendo el XML de la siguiente manera:

<script>

if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","meteo.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;


document.getElementById("temperature").innerHTML=x mlDoc.getElementsByTagName("temp_c")[0].childNodes[0].nodeValue;
document.getElementById("daymintemperature").inner HTML = ((xmlDoc.getElementsByTagName("temp_day_low_f")[0].childNodes[0].nodeValue-32)/1.8).toFixed(1);
document.getElementById("daymintemperaturetime").i nnerHTML=xmlDoc.getElementsByTagName("temp_day_low _time")[0].childNodes[0].nodeValue;
document.getElementById("daymaxtemperature").inner HTML = ((xmlDoc.getElementsByTagName("temp_day_high_f")[0].childNodes[0].nodeValue-32)/1.8).toFixed(1);
...

De esta manera en local me funciona todo a la perfección y casi todo está hecho con js, ya que con los datos me crea gráficos automáticamente entre otras funciones.

El problema es que si cambio meteo.xml por la ruta donde se encuentra el xml, el navegador me devuelve un error de CORS, por lo que no es válido para lo que necesito.

¿Hay alguna manera de leer el archivo XML del servidor remoto y luego poder seguir trabajando con XmlHttpRequest? ¿o debería rehacer todo?

Gracias de antemano.