Foros del Web » Programando para Internet » Javascript »

Seleccionar elemento hijo de un documento xml / seleccionar hijo con javascript

Estas en el tema de Seleccionar elemento hijo de un documento xml / seleccionar hijo con javascript en el foro de Javascript en Foros del Web. Necesito ayuda con esto que ahora os cuento. Tengo un documento xml con la siguiente estructura: Código PHP: < CATALOGO >     < CATEGORIA >         < ...
  #1 (permalink)  
Antiguo 26/09/2011, 02:26
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 7
Seleccionar elemento hijo de un documento xml / seleccionar hijo con javascript

Necesito ayuda con esto que ahora os cuento.
Tengo un documento xml con la siguiente estructura:
Código PHP:
<CATALOGO>
    <
CATEGORIA>
        <
SUBCATEGORIA>
            <
PRODUCTOS>
                <
PRODUCTO1>
                    <
NOMBRE>Producto1</NOMBRE>
                    <
DESCRIPCION>Esto es una prueba de xml</DESCRIPCION>
                    <
QUOTE>Probando xml</QUOTE>
                    <
FOTO1>../img/p1.jpg</FOTO1>
                    <
FOTO2>../img/p2.jpg</FOTO2>
                    <
FOTO3>../img/p3.jpg</FOTO3>
                    <
FOTO4>../img/p4.jpg</FOTO4>
                    <
FOTO5>../img/p5.jpg</FOTO5>
                    <
FOTO6>../img/p6.jpg</FOTO6>
                </
PRODUCTO1>
                <
PRODUCTO2>
                    <
NOMBRE>Producto2</NOMBRE>
                    <
DESCRIPCION>Esto es una prueba de xml</DESCRIPCION>
                    <
QUOTE>Probando xml</QUOTE>
                    <
FOTO1>../img/p1.jpg</FOTO1>
                    <
FOTO2>../img/p2.jpg</FOTO2>
                    <
FOTO3>../img/p3.jpg</FOTO3>
                    <
FOTO4>../img/p4.jpg</FOTO4>
                    <
FOTO5>../img/p5.jpg</FOTO5>
                    <
FOTO6>../img/p6.jpg</FOTO6>
                </
PRODUCTO2>
            </
PRODUCTOS>
        </
SUBCATEGORIA>
        <
SUBCATEGORIA>
            <
PRODUCTOS>
                <
PRODUCTO1>
                    <
NOMBRE>Prueba PRODUCTOSs 2</NOMBRE>
                    <
DESCRIPCION>Esto es una prueba de xml</DESCRIPCION>
                    <
QUOTE>Probando xml</QUOTE>
                    <
FOTO1>../img/p1.jpg</FOTO1>
                    <
FOTO2>../img/p2.jpg</FOTO2>
                    <
FOTO3>../img/p3.jpg</FOTO3>
                    <
FOTO4>../img/p4.jpg</FOTO4>
                    <
FOTO5>../img/p5.jpg</FOTO5>
                    <
FOTO6>../img/p6.jpg</FOTO6>
                </
PRODUCTO1>
            </
PRODUCTOS>
        </
SUBCATEGORIA>
    </
CATEGORIA>
</
CATALOGO
y un documento html con la siguiente:
Código PHP:
<html>
    <
head>
        <
style>
            
body{font-family:VerdanaGenevasans-serif;}
            
h1{font-size:2em;}
            
h2{font-size:1.5em;}
            
h3{font-size:1em;}
            
img{padding:5px;}
        </
style>
    </
head>
    <
body>
    
    <
script type="text/javascript">
        if (
window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari
          
xmlhttp=new XMLHttpRequest();
          }
        else  {
// code for IE6, IE5
          
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        
xmlhttp.open("GET","productos.xml",false);
        
xmlhttp.send();
        
xmlDoc=xmlhttp.responseXML;
        
        var 
x=xmlDoc.getElementsByTagName("PRODUCTOS");
        for (
i=0;i<x.length;i++)
          {
          
document.write("<h1>");
          
document.write(x[i].getElementsByTagName("NOMBRE")[0].childNodes[0].nodeValue);
          
document.write("<h1><h2>");
          
document.write(x[i].getElementsByTagName("DESCRIPCION")[0].childNodes[0].nodeValue);
          
document.write("</h2><h3>");
          
document.write(x[i].getElementsByTagName("QUOTE")[0].childNodes[0].nodeValue);
          
document.write("</h3><img src='");
          
document.write(x[i].getElementsByTagName("FOTO1")[0].childNodes[0].nodeValue);
          
document.write("'/><img src='");
          
document.write(x[i].getElementsByTagName("FOTO2")[0].childNodes[0].nodeValue);
          
document.write("'/><img src='");
          
document.write(x[i].getElementsByTagName("FOTO3")[0].childNodes[0].nodeValue);
          
document.write("'/><img src='");
          
document.write(x[i].getElementsByTagName("FOTO4")[0].childNodes[0].nodeValue);
          
document.write("'/><img src='");
          
document.write(x[i].getElementsByTagName("FOTO5")[0].childNodes[0].nodeValue);
          
document.write("'/><img src='");
          
document.write(x[i].getElementsByTagName("FOTO6")[0].childNodes[0].nodeValue);
          
document.write("'/>");
          }
    
</script>
    
    </body>
</html> 
el script que tengo me muestra los artículos dentro de <PRODUCTOS>; pero yo quiero que me muestre los HIJOS de la etiqueta <PRODUCTOS>.
¿Cómo selecciono el elemento hijo con javascript?
  #2 (permalink)  
Antiguo 26/09/2011, 02:32
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

He solucionado lo del xml cargándome <productos> y <productoX> para reemplazarlas por <producto>. He visto la luz... jejej menuda tontería.
De todas formas,
Cita:
Iniciado por paskuini Ver Mensaje
¿Cómo selecciono el elemento hijo con javascript?
  #3 (permalink)  
Antiguo 26/09/2011, 03:10
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

buenas,
simplemente explora los nodos. por ejemplo, childNodes contiene una lista de todos los nodos de un elemento. firstChild selecciona el primer nodo de un elemento. nextSibling selecciona el nodo que le sigue al nodo. previousSibling selecciona un nodo que le antecede al nodo. visualizalo como una relación de familia donde hay padres, hijos y hermanos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 26/09/2011, 03:27
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

Muchas gracias, zerokilled! como siempre, tu ayuda es de gran utilidad! :D

P.D.

Al final, tendré que dejar el xml como al principio. estoy mirando... se puede seleccionar elementos del xml por sus atributos?
  #5 (permalink)  
Antiguo 26/09/2011, 03:40
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: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

Podés usar el método getAttribute
  #6 (permalink)  
Antiguo 26/09/2011, 05:13
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

Según lo que pone aquí: XML DOM getAttribute() Method
Cita:
Iniciado por Example
The following code fragment loads "books.xml" into xmlDoc using loadXMLDoc() and gets the value of the "category" attribute in all <book> elements:
Código PHP:
xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName('book');

for (
i=0;i<x.length;i++)
{
document.write(x[i].getAttribute('category'));
document.write("<br />");

books.xml
Esto lo que hace es devolverte el valor del atributo... Yo lo que quisiera es buscar el valor del atributo directamente y que me devuelva a qué objeto pertenece. Como si fuese un ID, vamos... Perdonad mi ignorancia, pero es la primera vez que veo xml...
  #7 (permalink)  
Antiguo 26/09/2011, 05:48
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: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

Podés usar algo así: http://snipplr.com/view/1853/ o directamente xPath
  #8 (permalink)  
Antiguo 26/09/2011, 05:51
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

se me ocurre que puedes intentar con xpath. pero como no estoy al tanto, no se estoy seguro si xpath puede hacer ese tipo de selección, además de si es compatible con los navegadores principales. de todos modos, aunque bien getAttribute devuelve el valor del atributo, supongo que la idea de panino era que viajes por los nodos determinando la existencia del atributo. yo diria, que en lugar de getAttribute, uses hasAttribute si vas a implementar ese método.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 26/09/2011, 07:33
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: Seleccionar elemento hijo de un documento xml / seleccionar hijo con javas

Finding Elements by Id in a DOM Document Using XPath

Ahora mismo lo pruebo. Muchas gracias a los dos!

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 09:49.