Foros del Web » Programando para Internet » Javascript »

javascript + xml

Estas en el tema de javascript + xml en el foro de Javascript en Foros del Web. Hola, tengo un problema, estoy intentando parsear un XML, os pongo en situación. <xml> <nodo1 at1="abc" at2="def" /> <nodo2 at1="ghi" at2="jkl" /> </xml> con este ...
  #1 (permalink)  
Antiguo 14/08/2007, 07:21
 
Fecha de Ingreso: noviembre-2006
Mensajes: 7
Antigüedad: 17 años, 5 meses
Puntos: 0
javascript + xml

Hola, tengo un problema, estoy intentando parsear un XML, os pongo en situación.

<xml>
<nodo1 at1="abc" at2="def" />
<nodo2 at1="ghi" at2="jkl" />
</xml>

con este xml si quiero obtener los parámetros de los atributos, usaría getAttribute("at1") o getAttribute("at2")
pero resulta que el xml que tengo tiene el siguiente formato

<xml>
<nodo1>
<at1>abc</at1>
<at2>def</at2>
</nodo1>
<nodo2>
<at1>abc</at1>
<at2>def</at2>
</nodo2>
</xml>

la pregunta es ¿como llego al valor del parámetro at1 y at2?

gracias
  #2 (permalink)  
Antiguo 14/08/2007, 07:55
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: javascript + xml

Hola:

Sabiendo el nombre de la etiqueta, desde el padre se puede usar .getElementsByTagName()... que devuelve el array de etiquetas de ese nombre... pero como solo va a haber una le añades el índice 0 (cero)...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 14/08/2007, 08:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 7
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: javascript + xml

var nodos = xml.documentElement.getElementsByTagName("nodo");
for (var i = 0; i < nodos.length; i++) {
var at1 = parseFloat(nodos[i].getElementsByTagName("at1")
var at2 = parseFloat(nodos[i].getElementsByTagName("at2")
}

tengo esto y no me funciona.

el XML:

<xml>
<nodo1>
<at1>abc</at1>
<at2>def</at2>
</nodo>
<nodo>
<at1>abc</at1>
<at2>def</at2>
</nodo>
</xml
  #4 (permalink)  
Antiguo 14/08/2007, 19:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: javascript + xml

Hola:

Supongo que el <nodo1> de tu código es error de "tecleo"...

parseFloat de un string de letras no sé que te devolverá, pero lo más importante es que...

nodos[i].getElementsByTagName("at1") es un array de un elemento, así que deberías añadirle el índice cero entre corchetes ([0])... y el contenido yo uso el viejo truco de poner .firstChild.data

Pruébalo y nos cuentas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 15/08/2007, 09:05
 
Fecha de Ingreso: noviembre-2006
Mensajes: 7
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: javascript + xml

¿asi?

var nodos = xml.documentElement.getElementsByTagName("nodo");
for (var i = 0; i < nodos.length; i++) {
var at1 = parseFloat(nodos[i].getElementsByTagName("at1").firstChild.data
var at2 = parseFloat(nodos[i].getElementsByTagName("at2").firstChild.data
}

¿o como?

ah, gracias.
  #6 (permalink)  
Antiguo 15/08/2007, 19:20
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: javascript + xml

Cita:
Iniciado por pitufogranjero Ver Mensaje
¿asi?

var nodos = xml.documentElement.getElementsByTagName("nodo");
for (var i = 0; i < nodos.length; i++) {
var at1 = parseFloat(nodos[i].getElementsByTagName("at1").firstChild.data
var at2 = parseFloat(nodos[i].getElementsByTagName("at2").firstChild.data
}

¿o como?

ah, gracias.
Te falta el índice:

var at1 = parseFloat(nodos[i].getElementsByTagName("at1")[0].firstChild.data

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 21:18.