Foros del Web » Programando para Internet » Javascript »

Problemas al leer xml con javascript en Firefox

Estas en el tema de Problemas al leer xml con javascript en Firefox en el foro de Javascript en Foros del Web. Hola a tod@s; Estoy desarrollando una aplicación con google maps y los datos los saco de un xml del tipo : Código: <markers> <marker lat="41.378029" ...
  #1 (permalink)  
Antiguo 03/02/2008, 13:21
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 7 meses
Puntos: 4
Problemas al leer xml con javascript en Firefox

Hola a tod@s;

Estoy desarrollando una aplicación con google maps y los datos los saco de un xml del tipo :

Código:
<markers>
<marker lat="41.378029" lng="2.175043" name="Blabla" address="bla" url="url">
<concierto name="bla" fecha="31-01-2008" hora="12:00" precio="10"/>
</marker>
</markers>
Para recorrerlo utilizo el siguiente proceso:

Código:
var markers=xmlDoc.documentElement.getElementsByTagName("marker");

for(var i=0; i<markers.length; i++)
{
   alert(markers[i].childNodes.length);
   for(j=0;j<markers[i].childNodes.length;j++)
       alert(markers[i].childNodes[j].getAttribute("name"));
}
Es extraño esto en explorer (el 6) me funciona perfectamente, pero en mozilla no hay manera, me dice que "markers[i].childNodes.length" es igual a 3, cuando como se puede ver en el xml hay sólo un nodo y cuando intento acceder a los atributos me dice "markers[i].childNodes[j].getAttribute("name") is not a function".

Alguien sabe si el método childnodes funciona de manera diferente en mozilla que en explorer? Alguien me puede echar una mano? Estoy totalmente bloqueado.
  #2 (permalink)  
Antiguo 03/02/2008, 13:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Problemas al leer xml con javascript en Firefox

Hola:

La colección childNodes la manipula bien, pero lo que no entiendo es eso de xmlDoc...

La raiz de un documento con el DOM lo conocía como document.documentElement, aunque admito que no manejo mucho los documentos xml (solo con ajax)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 03/02/2008, 13:48
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 7 meses
Puntos: 4
Re: Problemas al leer xml con javascript en Firefox

Hola Caricatos gracias por tu interés

Igual esto aclara un poco

Estoy utilizando métodos propios de la API de Google maps

request.open('GET','xml/midoc.xml,true);

//tell the request what to do when the states changes
request.onreadystatechange=function()
{
if(request.readyState==4)
{
var xmlDoc=request.responseXML;

//aquí va el código comentado anteriormente.
}
}

No se, me parece muy extraño que funcione bien en un navegador y en el otro no...
  #4 (permalink)  
Antiguo 03/02/2008, 14:43
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
Re: Problemas al leer xml con javascript en Firefox

Esto me funciona correctamente en ambos navegadores:
Código PHP:
<!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 
ajax(){
if(
window.XMLHttpRequest){
    return new 
XMLHttpRequest();
}else{
    try{
        return new 
ActiveXObject("Microsoft.XMLHTTP");
    }catch(
e){
        return 
false;
    }
}
}
function 
consultar(){
    var 
aj=ajax();
    if(!
aj){
        
alert('error');
        return;
    }
    
aj.open('get','xml.xml',true);
    
aj.onreadystatechange=function(){
        if(
aj.readyState==4){
            
xml=aj.responseXML.documentElement;
            
document.getElementById('pp').innerHTML='Nodo marker<br />-lat='+xml.getElementsByTagName('marker')[0].getAttribute('lat')+'<br />-lng='+xml.getElementsByTagName('marker')[0].getAttribute('lng')+'<br />-name='+xml.getElementsByTagName('marker')[0].getAttribute('name')+'<br />-url='+xml.getElementsByTagName('marker')[0].getAttribute('url')+'<br /><br />Nodo concierto<br />-name='+xml.getElementsByTagName('concierto')[0].getAttribute('name')+'<br />-fecha='+xml.getElementsByTagName('concierto')[0].getAttribute('fecha')+'<br />-hora='+xml.getElementsByTagName('concierto')[0].getAttribute('hora')+'<br />-precio='+xml.getElementsByTagName('concierto')[0].getAttribute('precio');
        }else
            
document.getElementById('pp').innerHTML='cargando...';
    }
    
aj.send(null);
}
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <input type="button" name="Submit" value="try" onclick="consultar()" />
</form><div id="pp"></div>
</body>
</html> 
Y esto:
Código PHP:
//...
xml=aj.responseXML.documentElement;
alert(xml.getElementsByTagName('marker').length)
//... 
Devuelve 1 en ambos navegadores.

Última edición por Panino5001; 03/02/2008 a las 14:49
  #5 (permalink)  
Antiguo 03/02/2008, 15:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 135
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problemas al leer xml con javascript en Firefox

El problema es que te da tres nodos en lugar de uno por que
existen 2 nodos de tipo texto que tienes que eliminarlos.
  #6 (permalink)  
Antiguo 03/02/2008, 15:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 135
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problemas al leer xml con javascript en Firefox

En cualquier caso creo que no tienes que hacer referencia
a los nodos hijos, ya q te encuentras en el elemento que
quieres alertar los atributos:



var markers=xmlDoc.documentElement.getElementsByTagNam e("marker");

for(var i=0; i<markers.length; i++)
{
alert(markers[i].getAttribute("name"));
}
  #7 (permalink)  
Antiguo 18/09/2009, 06:25
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Problemas al leer xml con javascript en Firefox

Hola,
no me funciona el siguiente código en Firefox (Sí en IE):

var markers=xmlDoc.documentElement.getElementsByTagNam e("etiqueta");
valor=markers.getAttribute("atributo");

El xmlDoc lo he creado de la siguiente manera:

if (navigator.appName=="Microsoft Internet Explorer") var xmlDoc=new ActiveXObject("Microsoft.XmlDom");
else var xmlDoc=document.implementation.createDocument(""," ",null);

Lo tenía hecho de la siguiente manera pero tampoco me funciona:

valor=xmlDoc.documentElement.childNodes(0).getAttr ibute('atributo');

Alguién me puede decir el porque?

Un saludo.

Gracias.

Última edición por xinxan22; 18/09/2009 a las 06:28 Razón: Faltaba parte del mensaje
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




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