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

Como buscar por id dentro de responseXML

Estas en el tema de Como buscar por id dentro de responseXML en el foro de Frameworks JS en Foros del Web. Hola, hago una consulta ajax y con PHP genero un XML de este tipo: Código: <xml> <modelos> <modelo id='modelo1' atributo1='1'> <modelo id='modelo2' atributo1='2'> <modelo id='modelo3' ...
  #1 (permalink)  
Antiguo 03/09/2009, 12:50
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Como buscar por id dentro de responseXML

Hola, hago una consulta ajax y con PHP genero un XML de este tipo:

Código:
<xml>
<modelos>
<modelo id='modelo1' atributo1='1'>
<modelo id='modelo2' atributo1='2'>
<modelo id='modelo3' atributo1='3'>
</modelos>
y ahora al recibir la respuesta responseXML puedo entrar a cualquier determinado nodo por ejemplo con un alert de responseXML.firstChild.nodeName conseguiria el nombre de modelos y demas, pero a lo que quiero acceder yo es por ejemplo a un determinado elemento modelo, por ejemplo, quiero acceder al modelo tercero que tiene la id ='modelo3'.

Resumiendo que yo quiero acceder al atributo1 del modelo3, algo asi como si hiciera un
var ejemplo = responseXML.getElementById('modelo3');
ejempo.getAttribute('atributo1');

lo unico que veo que se podria acceder es por getElementsByTagName, pero por ahi no se como conseguir encontrar el atributo id.

Me he explicado un poco mal, espero que me hyais entendido.

Un saludo
  #2 (permalink)  
Antiguo 03/09/2009, 13:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como buscar por id dentro de responseXML

Perfectamente puedes usar getElementById('modelo3') si esta definido en el XML, ¿que error te causa al usarlo?.

Saludos.
  #3 (permalink)  
Antiguo 03/09/2009, 15:53
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Como buscar por id dentro de responseXML

Gracias Gator, tu siempre estas ahí...

A ver, yo en la funcion ajax que recibe el responseXML tengo lo siguiente:

Código:
var documento  = ajax.responseXML;
// y de prueba estoy haciendo alerts para ver si accedo al atributo 
que quiero,siguiendo el ejemplo anterior quiero el valor del 'atributo1' 
que tiene el elemento con id 'modelo3'

var aaa = documento.getElementById('modelo3');
alert(aaa.getAttribute('atributo1'));
Y con este alert., el firebug me da el error "aaa is null alert(aaa.getAttribute('atributo1')); "
  #4 (permalink)  
Antiguo 03/09/2009, 15:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como buscar por id dentro de responseXML

estas seguro que el documento que te llega es un xml? (prueba hacer un alert de ajax.responseXML)

Ya que en teoría debe de funcionar, yo lo uso así en mis requests y nunca me da error a menos que el id no este presente.

Saludos.
  #5 (permalink)  
Antiguo 03/09/2009, 18:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Como buscar por id dentro de responseXML

Hola:

Si el xml es tal cual lo has mostrado, está "mal formado", porque no se cierran los tags modelo...

Para este caso, tal vez sea mejor acceder por el array getElementsByTagName()

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 03/09/2009, 23:56
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Como buscar por id dentro de responseXML

Yo creo que si que esta bien formado, lo creo con PHP de la siguiente manera:

Código:
$doc = new DomDocument('1.0');
$modelos = $doc->createElement ('modelos');
$atributo = $doc->createAttribute('filas');// Creo el atributo
$modelos->appendChild($atributo);// Se lo acoplo al elemento "modelos"
etc
etc
$strXml = $doc->saveXML();
echo ($strXml);
Y el xml que me genera es con la es como el que puse pero con cierres de las etiquetas
Código:
<?xml version="1.0"?>
<modelos>
<modelo id='modelo1' atributo1='1' />
<modelo id='modelo2' atributo1='2' />
<modelo id='modelo3' atributo1='3' />
</modelos>
Yo pienso que si que es un xml pero que no encuentrola manera correcta de acceder al nodo mediante el atributo id porque hago los siguientes alerts y son todos correctos:

Código:
alert (documento.firstChild.nodeName);  // devuelve modelos que es el primer nodo del documento
alert (documento.firstChild.childNodes.length); // devuelve 89 que son los modelos que me da la bd
alert (documento)	;	//object XMLDocument , por lo que parece que si que recibe un XML									
var aaa = documento.getElementById('B1200'); 
alert(aaa.getAttribute('open')); //aqui el error.
  #7 (permalink)  
Antiguo 06/09/2009, 05:48
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Como buscar por id dentro de responseXML

Bueno, gracias por la ayuda, por lo que he podido ver no se puede emplear getElementById para parsear XML, yo por lo menos no lo encuentro.
He tenido que buscar un camino alternativo, que ya sabia pero es un poco mas engorroso.

Pero bueno gracias a los dos por contestar.

Salu2
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 15:02.