Foros del Web » Programando para Internet » Javascript » Frameworks JS »

ayuda manejando xml desde el dom

Estas en el tema de ayuda manejando xml desde el dom en el foro de Frameworks JS en Foros del Web. Hola , llevo horas intentando leer un XML con un script ajax que estoy intentando crear, el problema que tengo es este; tengo la siguiente ...
  #1 (permalink)  
Antiguo 10/02/2009, 04:19
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
ayuda manejando xml desde el dom

Hola , llevo horas intentando leer un XML con un script ajax que estoy intentando crear, el problema que tengo es este; tengo la siguiente salida XML:

Código:
<response>
<consulta/>
<name>prueba</name>
−
<text>
servicios perfectos .
</text>
<images>11,12,13,14,15,16</images>
</response>
Y el objeto Xml lo manejo del siguiente modo

El error está aquí porque lo demás funciona perfectamente , pero he buscado en google y no encuentro un ejemplo como el que yo quiero hacer.

contenido = xmlDocumentElement.getElementsByTagName('response' )[0].data;

//text=xmlDocumentElement.getElementsByTagName("resp onse").firstChild.data;
// actualizamos la pantalla del usuario usando los datos recibidos del servidor
document.getElementById("gallery").innerHTML =
'<i>' + contenido + '</i>';

El tema es que el contenido del XML se cargue en el DIV.

Gracias de antemano
  #2 (permalink)  
Antiguo 10/02/2009, 05:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: ayuda manejando xml desde el dom

Hola:

Supongo que el objeto ajax lo obtienes con algo así:

xmlDocumentElement = Ajax.responseXML;

Luego al poner
contenido = xmlDocumentElement.getElementsByTagName('response' )[0];
obtienes todo lo que hay en el tag response, pero si te fijas en la estructura, el primer hijo es el tag consulta, que está vacío, luego tendrías que recorrer esos hijos por ejemplo con el array childNodes...

Mira como se detripa un objeto Ajax desde esta página: Destripando objetos Ajax

Puedes ver el objeto tanto con responseText como con responseXML.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 10/02/2009, 05:00
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, 6 meses
Puntos: 834
Respuesta: ayuda manejando xml desde el dom

Deberías preguntar en el foro de AJAX. No obstante, te digo que creo que tenés algunos errores de concepto. La referencia a tu documento xml debería ser algo como esto:
Código javascript:
Ver original
  1. var docXML=objAjax.responseXML.documentElement;
Y a partir de allí, puede tomarse el contenido de cualquier nodo así:
Código javascript:
Ver original
  1. docXML.getElementsByTagName('nombreNodo')[indice].firstChild.data
Pero, luego, si usás innerHTML, tenés que usar tags html válidos, cosa que no estás haciendo.
Edito:
Hola, Pepe, mucho tiempo sin chocar, te mando un abrazo!!!
  #4 (permalink)  
Antiguo 10/02/2009, 06:00
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
Respuesta: ayuda manejando xml desde el dom

Cita:
Iniciado por Panino5001 Ver Mensaje
Deberías preguntar en el foro de AJAX. No obstante, te digo que creo que tenés algunos errores de concepto. La referencia a tu documento xml debería ser algo como esto:
Código javascript:
Ver original
  1. var docXML=objAjax.responseXML.documentElement;
Y a partir de allí, puede tomarse el contenido de cualquier nodo así:
Código javascript:
Ver original
  1. docXML.getElementsByTagName('nombreNodo')[indice].firstChild.data
Pero, luego, si usás innerHTML, tenés que usar tags html válidos, cosa que no estás haciendo.
Edito:
Hola, Pepe, mucho tiempo sin chocar, te mando un abrazo!!!
Bueno el objetoi ajax lo tengo creado por eso no lo puse , y funciona perfectamente porque ya lo he testado, el problema es en el javascript al intentar obtener los datos de lo que quiero en el XML, pero gracias de todas formas.
He preovado esto:
1.
docXML.getElementsByTagName('name')[0].firstChild.data

y no me funciona ,supongo porque no hay más que un name (es decir no hay name[0], name[1] etc etc) , ¿como puedo acceder a name por dios?.

He probado así también:

contenido = xmlDocumentElement.childNodes[0].data;
Me sale undefined en la capa donde se muestan los resultados

También he probado de la siguiente manera :
contenido = xmlDocumentElement.getElementsByTagName('text').fi rstChild.data;
Pero nada ...
Así tampoco:
contenido = xmlDocumentElement.getElementsByTagName('text').da ta;
Agradecería un ejemplo con alguno de los elementos de mi XML si no es mucha molestia .

Gracias a tod@s por la ayuda

Última edición por Dundee; 10/02/2009 a las 06:37
  #5 (permalink)  
Antiguo 10/02/2009, 07:30
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, 6 meses
Puntos: 834
Respuesta: ayuda manejando xml desde el dom

test.xml:
Código:
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<consulta/>
<name>prueba</name>
<text>
servicios perfectos .
</text>
<images>11,12,13,14,15,16</images>
</response>
Prueba:
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 
http(){
    if(
typeof window.XMLHttpRequest!='undefined'){
        return new 
XMLHttpRequest();    
    }else{
        try{
            return new 
ActiveXObject('Microsoft.XMLHTTP');
        }catch(
e){
            
alert('Su navegador no soporta AJAX');
            return 
false;
        }    
    }    
}
function 
requestGET(url,params,callback){
    var 
H=new http();
    if(!
H)return;
    var 
p='';
    for(var 
i in params){
        
p+='&'+i+'='+escape(params[i]);    
    }
    
H.open('get',url+'?'+p+'&'+Math.random(),true);
    
H.onreadystatechange=function(){
        if(
H.readyState==4){
            if(
callback)callback(H.responseXML);
            
H.onreadystatechange=function(){}
            
H.abort();
            
H=null;
        }
    }
    
H.send(null);
}
onload=function(){
    
requestGET('test.xml',{},function(r){alert(r.documentElement.getElementsByTagName('name')[0].firstChild.data);});

}
</script>
</head>

<body>
</body>
</html> 
En el alert aparece: "prueba"

También funciona de la misma manera si no uso el root del xml:
Código javascript:
Ver original
  1. r.getElementsByTagName('name')[0].firstChild.data
  #6 (permalink)  
Antiguo 10/02/2009, 07:51
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
Respuesta: ayuda manejando xml desde el dom

Buene gracias por la ayuda pero me sigue sin funcionar , insisto que el objeto HttRequest lo tengo perfectamente creado , mi fallo está al acceder al contenido del XML, he leído lo que has puesto y según entendí (seguramente mal) he intentado acceder a elemento (por ejemplo) name de la siguiente forma:

texto=xmlDocumentElement.getElementsByTagName('nam e')[0].firstChild.data;
// actualizamos la pantalla del usuario usando los datos recibidos del servidor
document.getElementById("gallery").innerHTML =
'<i>' + texto + '</i
>';
Pero no me funciona .

Un saludo y gracias
  #7 (permalink)  
Antiguo 10/02/2009, 07:56
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, 6 meses
Puntos: 834
Respuesta: ayuda manejando xml desde el dom

Estás seguro de que el fichero tiene content-type:text/xml? Te sugiero que lo visualices en Firefox a ver cómo se muestra.
  #8 (permalink)  
Antiguo 10/02/2009, 09:48
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
Respuesta: ayuda manejando xml desde el dom

Cita:
Iniciado por Panino5001 Ver Mensaje
Estás seguro de que el fichero tiene content-type:text/xml? Te sugiero que lo visualices en Firefox a ver cómo se muestra.
Huff si seguro ,si eso todo lo controlo .
Solo pido un ejemplo de como podría acceder al contenido del xml , por ejemplo al elemento "name" , lo demás lo se hacer de sobra y lo he comprobado 100 veces , si entras en inicio.php?CatId=1 se carga un XML con los datos de una consulta a una base de datos. Curiosamente si meto todo el xml dentro de un elemento y solo uno si funciona , por ejemplo:
<response> TODO DENTRO DE AQUÍ , echo y demas </response>, así si he consguido hacerlo funcionarr ,pero me gustaría darle más formato y poder por ejemplo poner el nombre , título y demas en elementos separados tipo:
<response>
<name> el que sea</name>
<texto> el que sea</name>
</response>

Pero eso solo pido , un ejemplo de como acceder desde javascript (olvidándose del ajax y el php ) a por ejemplo name en este supuesto .
Por si quedara alguna duda pongo el PHP:
http://localhost/pruebas/operations/...ro.php?CatId=1

Mi resultado es este en el navegador:
Código:
<response>
<name>el panda</name>
−
<text>
soy el panda del acoso sexual
</text>
<imagen>11,12,13,14,15,16</imagen>
</response>
Gracias a este post revisando el código me he dado cuenta del error ;:
En vez de poner name,text y demás ponia etiquetas de párrafo <p> por eso (¡¡sere zoquete¡¡¡) no conseguía mi resultado
deseado.
Gracias a tod@s

Última edición por Dundee; 10/02/2009 a las 10:00
  #9 (permalink)  
Antiguo 10/02/2009, 10:02
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, 6 meses
Puntos: 834
Respuesta: ayuda manejando xml desde el dom

Bueno, creería que eso que pedís es justamente lo que te mostré, pero quizá te convenga leerte esto: http://www.programacionweb.net/artic...iculo/?num=376

Edito: no vi que editaste tu mensaje.
  #10 (permalink)  
Antiguo 10/02/2009, 10:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: ayuda manejando xml desde el dom

Ya te puso panino5001 el ejemplo, no entiendo porque en tu ejemplo no sirve, deberías de poner como es que haces el proceso desde que recibes el objeto AJAX, ya que puede que el problema este ahí.

Si usas prototype puedes hacer un responseXML.inspect(); para ver el contenido del Layout.

Saludos
  #11 (permalink)  
Antiguo 10/02/2009, 10:37
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
Respuesta: ayuda manejando xml desde el dom

Cita:
Iniciado por GatorV Ver Mensaje
Ya te puso panino5001 el ejemplo, no entiendo porque en tu ejemplo no sirve, deberías de poner como es que haces el proceso desde que recibes el objeto AJAX, ya que puede que el problema este ahí.

Si usas prototype puedes hacer un responseXML.inspect(); para ver el contenido del Layout.

Saludos
Se que mi post puede resultar largo de leer entero, pero casi al final pongo que ya esta solucionado y como lo he hecho, había sido un error de tanto darle vuelta.
Gracias a tod@s
  #12 (permalink)  
Antiguo 10/02/2009, 11:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: ayuda manejando xml desde el dom

No había visto tu edición, para solucionar eso, lo que puedes hacer es envolver los elementos en un CDATA así puedes pasar tags HTML.

Saludos
  #13 (permalink)  
Antiguo 10/02/2009, 13:42
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
Respuesta: ayuda manejando xml desde el dom

Cita:
Iniciado por GatorV Ver Mensaje
No había visto tu edición, para solucionar eso, lo que puedes hacer es envolver los elementos en un CDATA así puedes pasar tags HTML.

Saludos
Gracias GatorV , me has resuelto mucho problemas desde que llevo posteando en estos foros, es un gusto contar con la ayuda de gente tan (como dicen en Granada) apaña (el significado es más o menos eficaz).

(::
Saludos
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 19:06.