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

Acceder a atributos de un XML con JavaScript

Estas en el tema de Acceder a atributos de un XML con JavaScript en el foro de Frameworks JS en Foros del Web. Holas, ahora me toco a mi plantear un problemilla , veran tngo un xml: Código: <?xml version='1.0' encoding='utf-8'?> <personas> <persona code='001'> <nombre>Jessica</nombre> <apellido>Monge</apellido> <edad>22</edad> <sexo>F</sexo> ...
  #1 (permalink)  
Antiguo 08/02/2008, 19:30
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Acceder a atributos de un XML con JavaScript

Holas, ahora me toco a mi plantear un problemilla , veran tngo un xml:
Código:
<?xml version='1.0' encoding='utf-8'?>
<personas>
    <persona code='001'>
      <nombre>Jessica</nombre>
      <apellido>Monge</apellido>
      <edad>22</edad>
      <sexo>F</sexo>
  </persona>
</personas>
Lo que yo quiero es acceder a el siguiente dato:code='001', es decir al atributo code, del nodo persona, jeje que he probado y no me tinca alguna idea por ahi, gracias...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #2 (permalink)  
Antiguo 08/02/2008, 19:49
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Acceder a atributos de un XML con JavaScript

Hola Bellenger:

Teóricamente documentoXML.getElementsByTagName("persona")[0].getAttribute("code") ¿no? Siempre que estés trabajando con AJAX y eso sea la respuesta de una lectura a un XML...

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 08/02/2008, 22:11
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Caramba como te digo que probe eso y me sale [ null ], , jeje alguna otra idea...Gracias de todas maneras:
Código:
      var objXmlDom=objDom;
      alert(objXmlDom.getElementsByTagName("persona")[0].getAttribute("code"));
Ahi el codigo por si alguna duda...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #4 (permalink)  
Antiguo 09/02/2008, 00:44
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: Acceder a atributos de un XML con JavaScript

Hola:

Las respuestas ajax en documentos XML sería:
ajax.responseXML.documentElement.getElementsByTagN ame("persona")...

Pero siempre desde el atributo responseXML...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 09/02/2008, 03:48
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Re: Acceder a atributos de un XML con JavaScript

Movido al foro de AJAX desde JavaScript.

Saludos,
  #6 (permalink)  
Antiguo 09/02/2008, 08:03
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Hola Caricatos, caramba como que no entendi muy bien lo que dices, podrias ser un poco mas especifico, fuera de eso, no necesariamente tiene que ser una respuesta Ajax, pues estoy parseando el doc xml como string en un documento, pero igual no funciona jeje, alguna idea por ahi...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #7 (permalink)  
Antiguo 09/02/2008, 08:55
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: Acceder a atributos de un XML con JavaScript

Cita:
Iniciado por Bellenger Ver Mensaje
Hola Caricatos, caramba como que no entendi muy bien lo que dices, podrias ser un poco mas especifico, fuera de eso, no necesariamente tiene que ser una respuesta Ajax, pues estoy parseando el doc xml como string en un documento, pero igual no funciona jeje, alguna idea por ahi...
Bueno, tú dirás si funciona o no... pero en el título del mensaje se habla de documento XML (Acceder a atributos de un XML)... y con javascript no se tiene acceso de ningún tipo de documento... y con ajax puedes aprovecharte de esa licencia... o sea, sin ajax la respuesta es rotunda: IMPOSIBLE; pero con ajax y documentos XML te he dado una respuesta que deberías considerar (no digo que sea la única )

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 09/02/2008, 13:24
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: Acceder a atributos de un XML con JavaScript

En realidad, habría que definir bien qué es y que no ajax, y qué es javascript y qué no lo es. Con DOM nivel 2 es posible acceder a documentos xml vía javascript hasta en navegadores obsoletos como explorer 5 de MAC (en teoría, no lo probé), aunque extrañamente, el mismo navegador en windows sólo pueda hacerlo vía ActiveXObject. De todas formas, lo que no es necesario es utilizar el objeto XMLHttpRequest para eso, aunque es posible, por supuesto (y menciono XMLHttpRequest porque algunos lo consideran sinónimo de AJAX, cosa con la que no estoy de acuerdo, ya que ajax es una tecnología bastante más vieja que XMLHttpRequest y es posible hacer ajax con iframes, imágenes, estilos css y hasta con inclusiones DOM).
Pero bueno, aquí dejo un ejemplo de cómo acceder a un documento xml sin XMLHttpRequest (el xml, pese a estar en el mismo código, hay que pensarlo -y de hecho es así y puede comprobarse mirando el código fuente resultante- como un archivo aparte):
Código PHP:
<?php 
if(isset($_GET['xml'])){
header("Content-type: text/xml");
echo 
'<';
echo 
'?xml version="1.0" encoding="iso-8859-1"?>
<datos>
    <dato tipo="info">esto pertenece a un xml externo</dato>
</datos>
'
;
exit;
}
?>
<!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 importXML()
{
    if (document.implementation && document.implementation.createDocument)
    {
        xmlDoc = document.implementation.createDocument("", "", null);
        xmlDoc.onload = function(){alert('nodo del tipo: '+xmlDoc.documentElement.getElementsByTagName('dato').item(0).getAttribute('tipo')+', contenido:'+xmlDoc.documentElement.getElementsByTagName('dato').item(0).firstChild.data)};
    }
    else if (window.ActiveXObject)
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.onreadystatechange = function () {
            if (xmlDoc.readyState == 4) alert('nodo del tipo: '+xmlDoc.documentElement.getElementsByTagName('dato').item(0).getAttribute('tipo')+', contenido:'+xmlDoc.documentElement.getElementsByTagName('dato').item(0).firstChild.data)
        };
     }
    else
    {
        alert('Your browser can\'t handle this script');
        return;
    }
xmlDoc.load('?xml')
}    
</script>
</head>

<body>
<a href="javascript:importXML()">traer</a>
</body>
</html>
Adicionalmente, se muestra como acceder al valor de un atributo utilizando getAttribute.

Última edición por Panino5001; 09/02/2008 a las 13:47
  #9 (permalink)  
Antiguo 10/02/2008, 08:52
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Carambas no pense que se armara un lio sobre que es y que no es ajax , en fin. Lo unico que deseo es poder acceder al atributo de un elemento XML, independiendetemente de si ha sido generado por una respuesta AJAX, o simplemente parseado como string o cargado con el XMLDOM, pues he probado y solo bota [null], jeje
Código:
    function processXML(objDom){
     var objXmlDom=objDom;
     alert(objXmlDom.getElementsByTagName("personas")[0].getAttribute("code"));

    }
Esta es la funcion que recibe como parametro el objetoXML, y pues nada, seguire probando y gracias por sus respuestas...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #10 (permalink)  
Antiguo 10/02/2008, 09: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, 5 meses
Puntos: 834
Re: Acceder a atributos de un XML con JavaScript

Mirá bien las respuestas: no estás usando documentElement en ningún lado ;)
  #11 (permalink)  
Antiguo 10/02/2008, 11:15
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Hola, si efectivamente, no use el documentElement, pero probando igual no funciona:
Código:
alert(objXmlDom.documentElement.getElementsByTagName('personas').item(0))
da como resultado null, y si intento colocar [getAttribute...], pues simplemente error,pero si oviamos el documentElement, devuelve un elemento del xml, asi que parce que hay algo que falta, jejeje, alguien que sepa como resolver este dilemita...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #12 (permalink)  
Antiguo 10/02/2008, 11:28
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Lo consegui, por si a alguien le interesa...
Código:
objXmlDom.getElementsByTagName('personas')[0].childNodes[0].attributes['id'].nodeValue
Algo extraño realmente el codigo, pero funciona, jeje haber si alguien lo acorta y me pasa el datito...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #13 (permalink)  
Antiguo 10/02/2008, 12:37
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: Acceder a atributos de un XML con JavaScript

Código PHP:
<?php 
if(isset($_GET['xml'])){
header("Content-type: text/xml");
echo 
'<?xml version="1.0" encoding="utf-8"?>
<personas>
    <persona code="001">
      <nombre>Jessica</nombre>
      <apellido>Monge</apellido>
      <edad>22</edad>
      <sexo>F</sexo>
  </persona>
</personas>
'
;
exit;
}
?>
<!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 importXML()
{
    if (document.implementation && document.implementation.createDocument)
    {
        xmlDoc = document.implementation.createDocument("", "", null);
        xmlDoc.onload = function(){alert('valor del atributo: '+xmlDoc.documentElement.getElementsByTagName('persona').item(0).getAttribute('code'))};
    }
    else if (window.ActiveXObject)
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.onreadystatechange = function () {
            if (xmlDoc.readyState == 4) alert('valor del atributo: '+xmlDoc.documentElement.getElementsByTagName('persona').item(0).getAttribute('code'))
        };
     }
    else
    {
        alert('Your browser can\'t handle this script');
        return;
    }
xmlDoc.load('?xml')
}    
</script>
</head>

<body>
<a href="javascript:importXML()">traer</a>
</body>
</html>
  #14 (permalink)  
Antiguo 10/02/2008, 20:58
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Caramba no es por desanimarte [Panino5001], pero el code que pones no funciona en Firefox, como ya se sabe, y en Internet Explorer, pues devuelve un Objeto, pero no el dato del atributo. De todas maneras como mencione ya lo resolvi, pero desafortunadamente solo funciona en Firefox, jejej que caramba...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #15 (permalink)  
Antiguo 10/02/2008, 21:43
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: Acceder a atributos de un XML con JavaScript

No me desanimo. Funciona en ambos navegadores sin problemas (lo probé antes de postearlo). Sólo que si lo querés probar sin modificarlo, tenés que guardarlo como archivo php y hacerlo correr en un servidor web que tenga soporte para php. Si no tenés soporte php, tenés que eliminar toda la codificación php, colocar el xml en un archivo independiente y colocar la ruta de ese xml en el llamado al método load.
No lo mencioné porque lo di por supuesto.
También podés probarlo aquí.

Última edición por Panino5001; 10/02/2008 a las 23:16
  #16 (permalink)  
Antiguo 10/02/2008, 23:25
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

JEJE, yo hechandole la mole, pues en Firefox 2.x funciona, pero en IE 6.0 no... en 7.0 no lo he probado, y ejecute el enlace que colocaste...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #17 (permalink)  
Antiguo 11/02/2008, 00:19
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: Acceder a atributos de un XML con JavaScript

Es que en el archivo había agregado una línea diferente del código que posteé. Ya la quité. Probalo ahora y vas a ver que funciona. Yo lo probé en Firefox, IE 5, 6 y 7 y en Ópera.
  #18 (permalink)  
Antiguo 12/02/2008, 08:22
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Acceder a atributos de un XML con JavaScript

Hay caramba ahora si funciona, se agradece el ejemplo, lo implementera Gracias. Tema cerrado...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #19 (permalink)  
Antiguo 12/02/2008, 12:12
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Re: Acceder a atributos de un XML con JavaScript

loading...........

Con XmlhttpRequest también debería haber funcionado, creo que el problema estaba en que no declaraba las cabeceras como documento XML.

connection closed.
__________________

Maborak Technologies
  #20 (permalink)  
Antiguo 23/03/2011, 01:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 45
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: Acceder a atributos de un XML con JavaScript

http://www.ibm.com/developerworks/li...1XMLinFirefox3
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:09.