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. Hola, Quisiera saber porque no funciona lo siguiente: Tengo el siguiente XML "respuestas.xml": <?xml version="1.0" ?> <Preg> <respuesta>1_false</respuesta> <respuesta>1_false</respuesta> <respuesta>1_true</respuesta> </Preg> <Preg> <respuesta>2_true</respuesta> </Preg> y ...
  #1 (permalink)  
Antiguo 09/06/2008, 09:13
 
Fecha de Ingreso: febrero-2008
Mensajes: 36
Antigüedad: 16 años, 2 meses
Puntos: 0
leer XML desde JavaScript

Hola,

Quisiera saber porque no funciona lo siguiente:


Tengo el siguiente XML "respuestas.xml":
<?xml version="1.0" ?>
<Preg>
<respuesta>1_false</respuesta>
<respuesta>1_false</respuesta>
<respuesta>1_true</respuesta>
</Preg>
<Preg>
<respuesta>2_true</respuesta>
</Preg>


y la siguiente función en JavaScript para leer el XML:

function cargarXML()
{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load("respuestas.xml");

document.write("<html>");
document.write("<body >");
document.write("<br>HOLA<br>");
document.write(xmlDoc.getElementsByTagName("Preg")[0].firstChild[0].nodeValue);
document.write("</body>");
document.write("</html>");
return true;
}


Muestra la palabra HOLA pero no muestra el elemento de XML.

Gracias,

Un saludo,

Última edición por lunera_lunera; 09/06/2008 a las 09:24
  #2 (permalink)  
Antiguo 09/06/2008, 09:35
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 5 meses
Puntos: 24
Respuesta: leer XML desde JavaScript

Normalmente la carga del fichero .xml se detecta de forma asíncrona con el evento onreadystatechange asociado al objeto ActiveXObject (XMLHttpRequest en general).

Mientras no se haya recibe dicho evento es que el fichero aun no se ha cargado y por tanto no se puede examinar.
En ese evento lo que se suele hacer es comprobar lo siguiente:
- xmlDoc.readyState debe ser 4, para saber que se ha terminado de cargar
- xmlDoc.status debe ser 200, para saber que se ha cargado correctamente sin errores.

Si se cumplen las condiciones anteriores ya puedes empezar a analizar el fichero cargado, pero no antes.
__________________
Grupos de Música
Pop Music Stars
  #3 (permalink)  
Antiguo 09/06/2008, 10:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 36
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: leer XML desde JavaScript

Hola aloqui, gracias por tu respuesta.

He comprobado que esas variables no tienen esos valores cuando empiezo a leer el XML. Como puede el programa "esperar" a que esas variables cojan esos valores?

Muchas gracias,

Un saludo,
  #4 (permalink)  
Antiguo 09/06/2008, 10:09
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: leer XML desde JavaScript

loading........


Hola, en vez de utilizar XMLDOM porque no usas el objeto XMLHTTPREQUEST? ya que este te ayudara a tratar mejor los documentos XML remotos... o estas leyendo el XML a partir de un string?


connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 09/06/2008, 10:18
 
Fecha de Ingreso: febrero-2008
Mensajes: 36
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: leer XML desde JavaScript

Hola MaBoRaK,

He probado a usar XMLHTTPREQUEST y XMLHTTP, pero me da error....

Gracias,

Saludos
  #6 (permalink)  
Antiguo 09/06/2008, 10:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Respuesta: leer XML desde JavaScript

Buenas

mira, hay dos cuestiones. La primera es que el documento xml no es correcto y por lo tanto no se puede procesar.

Si tratas de visualizar el xml con el navegador te dice

Cita:
Sólo se admite un elemento de nivel superior en un documento XML. Error al procesar el recurso file:///Z:/...

<Preg>
-^
Es decir, sólo puedes tener un elemento <Preg> o bien, si quieres tener más de uno deben estar dentro de otro elemento que los reuna a todos.

Podrías meterlos dentro de un elemento <preguntas>

Código:
<?xml version="1.0" ?>
<preguntas>
	<Preg>
		<respuesta>1_false</respuesta>
		<respuesta>1_false</respuesta>
		<respuesta>1_true</respuesta>
	</Preg>
	<Preg>
		<respuesta>2_true</respuesta>
	</Preg>
</preguntas>
Luego el segundo error lo tienes aquí

Código:
xmlDoc.getElementsByTagName("Preg")[0].firstChild[0].nodeValue
Debes pedírselo así

Código:
xmlDoc.getElementsByTagName("Preg")[0].firstChild.firstChild.nodeValue
  #7 (permalink)  
Antiguo 09/06/2008, 10:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 36
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: leer XML desde JavaScript

Hola tunait,

Gracias por tu respuesta, ahora sí funciona. Había creado este sencillo XML para probar a leerlo desde JavaScript, pero claro, no sabía que sólo se admite un elemento de nivel superior.

Muchas gracias,

un saludo,
  #8 (permalink)  
Antiguo 09/06/2008, 10:47
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Respuesta: leer XML desde JavaScript

Pasa muchas veces que te rompes la testa tratando de averiguar por qué no anda el js y al final el problema está en el xml que por lo que sea se ha creado con algún error (especialmente cuando el xml se genera dinámicamente)

Por cierto, no sé si ya sabes que la función js que estás usando para cargar el documento xml es sólo para IExplorer y no funcionará en otro navegadores.

Dime si quieres que te ponga las líneas que puede agregar para que cargue también en otros navegadores distintos a IE
  #9 (permalink)  
Antiguo 09/06/2008, 11:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 36
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: leer XML desde JavaScript

Hola,

Pues sí, porque yo no hacía mas que darle vueltas al código en JavaScript y del XML ni me había preocupado...

Se que sólo se va a ver en el explorer, por ahora estoy haciendo mi aplicación sólo para el explorer, pero tarde o temprano tendré que hacerla para que se vea en cualquier navegador... por lo que si quieres decirme como se hace te lo agradecería, así lo añado ya.

Muchas gracias,

Un saludo,
  #10 (permalink)  
Antiguo 09/06/2008, 11:41
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: leer XML desde JavaScript

Hola, si querés usar XMLDOM, aquí tenés buena información: http://www.w3schools.com/Dom/dom_parser.asp.
No obstante estoy con MaboRak: la alternativa más crossbrowser es XMLHttpRequest, junto con las clases ActiveXObject para las versiones viejas de Explorer.
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 17:49.