Foros del Web » Programando para Internet » Javascript »

leer XMl conJAvaScript

Estas en el tema de leer XMl conJAvaScript en el foro de Javascript en Foros del Web. Hola chicos. TEngo este tipo de XML Código PHP: < paper > < id > 1 </ id > < titulo > titulo muy interesante </ titulo ...
  #1 (permalink)  
Antiguo 05/04/2008, 01:46
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 18 años, 1 mes
Puntos: 0
leer XMl conJAvaScript

Hola chicos.
TEngo este tipo de XML
Código PHP:
<paper>
<
id>1</id>
<
titulo>titulo muy interesante</titulo>
</
paper>
<
paper>
<
id>2</id>
<
titulo>titulo no tan interesante</titulo>
</
paper
...................

Y intento leerlo con Javascript

Código PHP:
var paper miPeticion.responseXML.getElementsByTagName('paper');
        for(
i=0i<paper.lengthi++){
            
            
alert(paper[i].getElementsByTagName('id').nodeValue);

            
alert(paper[i].getElementsByTagName('titulo').nodeValue);

        } 
Me salta "undefined" , aunque el archivo XML esta bien, y el objeto miPeticion (perticion AJAX) tmabien function correctamente.
Lo que no lea es los nodos hijos del nodo papar.

Creo que no los llamo correctmanente.

Gracias a todos!
  #2 (permalink)  
Antiguo 05/04/2008, 16:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: leer XMl conJAvaScript

Hola:

getElementsByTagName() devuelve un array, así que debes manejarlo como tal, o sea que tiene el atributo length... y los elementos tienen índices...

Si tú fabricas el xml, seguramente con un lenguaje del servidor... también puedes poner atributos como id

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 05/04/2008, 18:09
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, 5 meses
Puntos: 834
Re: leer XMl conJAvaScript

Bueno, hay algunas cosas que están mal. Tu xml no tiene encabezados ni un nodo padre. Tendrías que convertirlo a un esquema semejante a este:
Código PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
<r>
    <paper>
        <id>1</id>
        <titulo>titulo muy interesante</titulo>
    </paper>
    <paper>
        <id>2</id>
        <titulo>titulo no tan interesante</titulo>
    </paper>
</r>
Tampoco realizás bien el parseo. Fijate en este ejemplo:
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){
            
alert('nop');
            return;
        }
    }
}
aj=new ajax();
try{
aj.open('GET','test.xml',true);
aj.onreadystatechange=function(){
    if(
aj.readyState==4){
        
xml=aj.responseXML.getElementsByTagName('paper');
        for(
i=0;i<xml.length;i++){
            
alert(xml[i].getElementsByTagName('id')[0].firstChild.data);
            
alert(xml[i].getElementsByTagName('titulo')[0].firstChild.data);
        }
        
aj.onreadystatechange=null;
    }
}
aj.send(null);
}catch(
e){}
</script>
</head>

<body>
</body>
</html> 

Última edición por Panino5001; 05/04/2008 a las 18:15
  #4 (permalink)  
Antiguo 06/04/2008, 03:47
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: leer XMl conJAvaScript

Gracias!
yo lo he resuleto de este modo
Código PHP:
var papers miPeticion.responseXML.getElementsByTagName('paper');
for(
i=0i<papers.lengthi++){
    
/* get childNode "id" value */
    
var id papers[i].childNodes[0].firstChild.nodeValue;
                    
    
/* get childNode "title" value and create text Node */
    
var title document.createTextNode(papers[i].childNodes[1].firstChild.nodeValue);


Que funciona pero no vale porque realmente lo que busque efectivamente era lo que me comenta Panino5001

a
Código PHP:
lert(xml[i].getElementsByTagName('id')[0].firstChild.data); 
Lo que no entiendo porque debo poner ('id')[0]? Porque no basta con ('id')?
Porque es [0] exactamente? Para que poner [0]? si para tag corriente paper1 por ejemplo o para cualquer tag paper[i] solo existe un tag id y un tag title. No existe ningun array de ids ni de titles dentro de un elemento paper. Por que debo llamar a primer elemento que es 0 cuando no hay mas elementos?

Gracias a todos!
  #5 (permalink)  
Antiguo 06/04/2008, 04:09
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, 5 meses
Puntos: 834
Re: leer XMl conJAvaScript

Pasa que, aunque en tu estructura hay sólo un tag id dentro de paper, podría haber varios y seguir siendo igualmente un xml bien formado. Además, como getElementsByTagName siempre se refiere a la colección completa (es decir a un array de elementos), hay que indicarle obligatoriamente el índice para que sepa a qué elemento en particular, de toda esa colección, nos estamos refiriendo. Y, finalmente, ya que tu colección consta en cada nodo paper de un sólo elemento por tipo, hay que colocar el índice cero, que es siempre el primer índice de los arrays de claves numéricas.
  #6 (permalink)  
Antiguo 06/04/2008, 06:43
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: leer XMl conJAvaScript

Interesante y bien saberlo!
Gracias por la explicacion.
Voy a practicar con eso!
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 18:44.