Foros del Web » Programando para Internet » Javascript »

Leer XML desde JavaScript

Estas en el tema de Leer XML desde JavaScript en el foro de Javascript en Foros del Web. Buenas tardes, Soy nuevo por el foro y veréis: Recientemente me han encomendado adentrarme en el mundo del html5-javascript. Ando como un lobo solitario enfrentándome ...
  #1 (permalink)  
Antiguo 05/11/2012, 11:16
Avatar de rosonator  
Fecha de Ingreso: noviembre-2012
Ubicación: Bilbao
Mensajes: 49
Antigüedad: 11 años, 5 meses
Puntos: 7
Leer XML desde JavaScript

Buenas tardes,

Soy nuevo por el foro y veréis: Recientemente me han encomendado adentrarme en el mundo del html5-javascript. Ando como un lobo solitario enfrentándome a los problemas que me surgen, pero aquí he aquí un problema que me está trayendo de cabeza, dado que no localizo el error.

Se trata de abrir un XML de este aspecto

Código:
<nivel>
       <pregunta Nivel="1" texto="¿En qué margen de la ría está situado Erandio?">
               <respuestaA correcta="No" texto="En la izquierda."/>
               <respuestaB ...>
       </pregunta>
       <pregunta .....>
</nivel>

<nivel ...>
y a través de JavaScript guardarlo en arrays, lo cual intento de esta manera:

Código:
	//ABRIR EL XML Y CARGARLO EN UNA MATRIZ
 	
 	var array1 = new Array();
	
	var xmlDoc=loadXMLDoc("XMLS/erandio1.xml");
	var arniveles = xmlDoc.getElementsByTagName("nivel");
	
	for (i=0;i<ar.length;i++) {
		var array2 = new Array();
		var arpreguntas = arniveles[i].getElementsByTagName("pregunta");
		
	    for (j=0;j<arpreguntas.length;j++) {
	    	var array3 = new Array();
	    	array3.push(arpreguntas[j].texto);
	    	
		
    		for (k=0;k<arpreguntas[j].childNodes.length;k++) {
    			array3.push(arpreguntas[j].childNodes[k].nodeValue);
			}
				
			array2.push(array3);
	    	 
		}
		array1.push(array2);
 	}

Espero que alguien más clarividente que yo sepa decirme qué ocurre o qué hago mal, prometo colaborar en lo que pueda en el foro en adelante.

Por cierto, muchas gracias por adelantado.

Nos hablamos,

Alex.
  #2 (permalink)  
Antiguo 05/11/2012, 11:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Leer XML desde JavaScript

Hola:

En primer lugar debes validar el xml para ver si está bien formado (el problema más recurrente tal vez).

...y sobre el código, la parte ".texto" me suena que deberías usar el método getAttribute ("texto")...

De todos modos, deberías revisar la consola de errores de tu navegador.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 05/11/2012, 11:35
Avatar de rosonator  
Fecha de Ingreso: noviembre-2012
Ubicación: Bilbao
Mensajes: 49
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Leer XML desde JavaScript

Gracias por la pronta respuesta, aunque ni el primero (ya se ha utilizado antes este xml, y por si acaso lo he comprobado) ni el segundo (he adoptado tu cambio) me dan un buen resultado.

El consejo de la consola es bueno, no sabía de su existencia.

Me lanza este error:

Uncaught ReferenceError: loadXMLDoc is not defined

Se me acaba la jornada, ya mañana intentaré descubrir qué significa y cómo se arregla, si alguien no me ha dado la respuesta antes por aquí ^^

Saludos y mcuhas gracias!

Última edición por rosonator; 05/11/2012 a las 11:40
  #4 (permalink)  
Antiguo 05/11/2012, 17:18
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Leer XML desde JavaScript

Mira, loadXMLDoc no es una función nativa de javascript, pero encontre que es equivalente a este codigo
Código Javascript:
Ver original
  1. function loadXMLDoc(dname)
  2. {
  3. if (window.XMLHttpRequest)
  4.   {
  5.   xhttp=new XMLHttpRequest();
  6.   }
  7. else
  8.   {
  9.   xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  10.   }
  11. xhttp.open("GET",dname,false);
  12. xhttp.send();
  13. return xhttp.responseXML;
  14. }

solo agrega este codigo al principio de ese script

Un saludo :D
  #5 (permalink)  
Antiguo 05/11/2012, 17:22
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Leer XML desde JavaScript

Hola, hace tiempo estaba leyendo nodos XML que tenian dentro codigo HTML y bueno hice una funcion recursiva para leer todo el contenido(tambien atributos)

http://www.forosdelweb.com/f13/aport...mente-1019689/

Espero te sirva ahorita o despues

Saludos
  #6 (permalink)  
Antiguo 06/11/2012, 02:24
Avatar de rosonator  
Fecha de Ingreso: noviembre-2012
Ubicación: Bilbao
Mensajes: 49
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Leer XML desde JavaScript

Cita:
Iniciado por chwc Ver Mensaje
Mira, loadXMLDoc no es una función nativa de javascript, pero encontre que es equivalente a este codigo
Código Javascript:
Ver original
  1. function loadXMLDoc(dname)
  2. {
  3. if (window.XMLHttpRequest)
  4.   {
  5.   xhttp=new XMLHttpRequest();
  6.   }
  7. else
  8.   {
  9.   xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  10.   }
  11. xhttp.open("GET",dname,false);
  12. xhttp.send();
  13. return xhttp.responseXML;
  14. }

solo agrega este codigo al principio de ese script

Un saludo :D

He tenido que alojar la página en el servidor para poder probar ese código, y he tenido algún otro fallito, pero por fin ha funcionado, muchísimas gracias!!!
  #7 (permalink)  
Antiguo 06/11/2012, 02:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Leer XML desde JavaScript

Hola:

Cita:
Iniciado por rosonator Ver Mensaje
He tenido que alojar la página en el servidor para poder probar ese código...
Hay algunos paquetes de software gratuitos para tener un servidor en tu ordenador... yo actualmente uso mowes, pero hay muchos como xampp... y son portables...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: html, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:07.