Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   Acceder a atributos de un XML con JavaScript (http://www.forosdelweb.com/f127/acceder-atributos-xml-con-javascript-555623/)

Bellenger 08/02/2008 19:30

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...:si:

derkenuke 08/02/2008 19:49

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.

Bellenger 08/02/2008 22:11

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...:patada:

caricatos 09/02/2008 00:44

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 :arriba:

JavierB 09/02/2008 03:48

Re: Acceder a atributos de un XML con JavaScript
 
Movido al foro de AJAX desde JavaScript.

Saludos, :adios:

Bellenger 09/02/2008 08:03

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...:patada:

caricatos 09/02/2008 08:55

Re: Acceder a atributos de un XML con JavaScript
 
Cita:

Iniciado por Bellenger (Mensaje 2279732)
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...:patada:

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 :policia:)

Saludos :arriba:

Panino5001 09/02/2008 13:24

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.

Bellenger 10/02/2008 08:52

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 :patada:, 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...:patada:

Panino5001 10/02/2008 09:30

Re: Acceder a atributos de un XML con JavaScript
 
Mirá bien las respuestas: no estás usando documentElement en ningún lado ;)

Bellenger 10/02/2008 11:15

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...:patada:

Bellenger 10/02/2008 11:28

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...:patada:

Panino5001 10/02/2008 12:37

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>


Bellenger 10/02/2008 20:58

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...:patada:

Panino5001 10/02/2008 21:43

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í.

Bellenger 10/02/2008 23:25

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...:si:

Panino5001 11/02/2008 00:19

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.

Bellenger 12/02/2008 08:22

Re: Acceder a atributos de un XML con JavaScript
 
Hay caramba ahora si funciona, se agradece el ejemplo, lo implementera Gracias. Tema cerrado...:patada:

MaBoRaK 12/02/2008 12:12

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.

CarlosMC 23/03/2011 01:33

Respuesta: Acceder a atributos de un XML con JavaScript
 
http://www.ibm.com/developerworks/li...1XMLinFirefox3


La zona horaria es GMT -6. Ahora son las 22:11.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.