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

Ayuda para obtener info de XML mediante JS

Estas en el tema de Ayuda para obtener info de XML mediante JS en el foro de Frameworks JS en Foros del Web. Hola foreros, actualmente estoy haciendo un plug-in para jQuery donde necesito tener cierta información relacionada a videos de youTube. Afortunadamente pude averiguar que la información ...
  #1 (permalink)  
Antiguo 22/11/2010, 22:02
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Ayuda para obtener info de XML mediante JS

Hola foreros, actualmente estoy haciendo un plug-in para jQuery donde necesito tener cierta información relacionada a videos de youTube.

Afortunadamente pude averiguar que la información de los videos se encuentra en la url: http://gdata.youtube.com/feeds/videos/ + idVideo

La verdad es que aún no me introduzco al mundo de AJAX (JS + XML), no tengo ningún conocimiento de esto, ya que solo manejo HTML + JS, pero no XML, es por eso que recurro a ustedes a ver si me pueden ayudar, estuve buscando en internet pero salen cosas de las que no entiendo nada y termino confundido.

Mi pregunta es: Cómo puedo leer un archivo XML? Por ejemplo este:
http://gdata.youtube.com/feeds/videos/VurhzANQ_B0, y acceder a los valores de sus etiquetas?

Hay mucha información dentro de ese XML, pero sólo necesito saber el título del video y la descripción.

Si no me equivoco la etiqueta <title> contiene el título del video y <media:description type='plain'> la descripción.

Cómo puedo hacerlo?

Ojalá me puedan ayudar y me expliquen un poquito, porque como dije, no sé nada de esto.

Muchas gracias foreros y saludos!
  #2 (permalink)  
Antiguo 23/11/2010, 13:47
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Ayuda para obtener info de XML mediante JS

Un ejemplo sencillo para leer un XML es el siguiente:

Teniendo el siguiente XML llamado "xml.xml":
Código XML:
Ver original
  1. <?xml version="1.0" encoding="iso-8859-2"?>
  2. <usuarios>
  3.     <registro>
  4.         <rut>1</rut>
  5.         <dv>1</dv>
  6.         <nombres>Pepito</nombres>
  7.         <apellido_paterno>Trepa</apellido_paterno>
  8.         <apellido_materno>Por Chile</apellido_materno>
  9.         <cargo>Programador</cargo>
  10.     </registro>
  11.    
  12.     <registro>
  13.         <rut>2</rut>
  14.         <dv>2</dv>
  15.         <nombres>Juan</nombres>
  16.         <apellido_paterno>Tuvo</apellido_paterno>
  17.         <apellido_materno>Un tubo</apellido_materno>
  18.         <cargo>Terrible de jefe</cargo>
  19.     </registro>
  20. </usuarios>


Código PHP:
Ver original
  1. // Cargo la ruta en $archivo
  2. $archivo = "xml.xml";
  3.  
  4. // Cargo el archivo en $archivo_xml
  5. $archivo_xml = simplexml_load_file($archivo);  
  6.  
  7. // Si el archivo existe
  8. if($archivo_xml)
  9. {
  10.         // Lo recorro completamente
  11.     foreach ($archivo_xml->registro as $registro)
  12.     {
  13.                 // Despligo los "nombres" del XML ($registro)
  14.         echo "Nombres: ".$registro->nombres;
  15.         echo "<br>";
  16.                 // Despligo los "apellido_paterno" del XML ($registro)
  17.         echo "Apellido Paterno: ".$registro->apellido_paterno;
  18.         echo "<br>";
  19.                 // Despligo los "apellido_materno" del XML ($registro)
  20.         echo "Apellido Paterno: ".$registro->apellido_materno;
  21.         echo "<hr>";
  22.     }
  23. // Si no existe o el XML esta corrupto
  24. } else echo "WTF?";
  #3 (permalink)  
Antiguo 23/11/2010, 15:51
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

TragedyCL muchas gracias por el ejemplo, me sirve bastante para aprender a manejar XML con PHP, pero lo que busco ahora es leer un XML con JavaScript, no con PHP, muchas gracias, igual es de utilidad, pero como dije, por ahora es estrictamente necesario que lo haga con JavaScript.

Saludos!
  #4 (permalink)  
Antiguo 23/11/2010, 20:49
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Mejor si me ayudan haciéndolo con jQuery, se me había olvidado la existencia de la función ajax, estoy averiguando al respecto. Saludos!
  #5 (permalink)  
Antiguo 23/11/2010, 23:12
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Conseguí leer un archivo xml con la función $.ajax, pero tengo 2 problemas:

1: Cómo puedo leer una etiqueta con namespace? Ej.> <media:description>Valor</media:description>?

2. Sólo puedo leer archivos XML localmente (excepto en explorer), si es un archivo está en un servidor remoto no funciona :S

Les dejo mi parte de código:

Código Javascript:
Ver original
  1. $.ajax({
  2.     type: 'GET',
  3.     url: 'pruebaXML.xml',
  4.     dataType: $.browser.msie? 'text' : 'xml',
  5.     success: function(XMLdata) {
  6.         if(typeof XMLdata == 'string') {
  7.             var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
  8.             xmlDoc.async = false;
  9.             xmlDoc.loadXML(XMLdata);
  10.         }
  11.                                
  12.         else var xmlDoc = XMLdata;
  13.                                
  14.         vInfo[i] = $(xmlDoc).find('title').text();
  15.         if(opts.description) vInfo[i,1] = $(xmlDoc).find('media:description').text();
  16.         //En la linea de arriba el parametro 'media:description' que se le pasa
  17.         //al metodo find no funciona.
  18.     }
  19. });

Por mientras seguiré buscando en la web como resolverlo, espero su ayuda, saludos!
  #6 (permalink)  
Antiguo 23/11/2010, 23:30
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

En efecto, ningún otro navegador te va a dejar acceder a documentos alojados en otro dominio, es necesario que hagas un proxy, en php por ejemplo, que lea el archivo y yo te recomendaría que lo proceses también del lado del servidor y mandes la respuesta a js en json.
  #7 (permalink)  
Antiguo 23/11/2010, 23:35
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Solucioné el problema número 1, sólo bastaba con poner como parámetro a find 'media\\:description'. Era necesario poner los '\\'

Ahora con respecto al problema número 2, según lo que me dices dual3nigma, estás seguro que sólo con explorer se puede leer archivos xml remotamente? en los otros navegadores no se puede? por qué?

Lo que pasa es que estoy haciendo un plugin para jQuery, y la idea era usar sólo JavaScript :(

No conozco el concepto de proxy, me podrías explicar la idea?
Saludos!

Última edición por de-troit; 24/11/2010 a las 00:35
  #8 (permalink)  
Antiguo 24/11/2010, 08:45
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Asi es, puedes investigar sobre "cross domain policy". Un proxy seria lo que te comentaba de que hicieras las solicitudes a un archivo en tu servidor (php por ejemplo) que cargarara los contenidos de la página y te los enviara ya que obvio del lado del servidor no existen estas restricciones. Pero pues como el punto es que sea puro js, quizas podrias buscar un plugin para jquery que lo haga, se que eso se puede hacer con YQL, pero no se si para jQuery halla algo parecido. En todo caso busca "ajax cross domain jquery" o algo asi.
  #9 (permalink)  
Antiguo 24/11/2010, 09:33
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Mira, hice un ejemplo muy sencillo utilizando yql y jquery que muestra title y description del feed, pruebalo y me dices si te sirvio:
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <title>Cross Domain Ajax</title>
  4. <script src="jquery.min.js"></script>
  5. // La url del feed del video
  6. var url = 'http://gdata.youtube.com/feeds/videos/VurhzANQ_B0';
  7. // La consulta a YQL
  8. var yql = 'http://query.yahooapis.com/v1/public/yql?q='+encodeURIComponent('select * from xml where url="' + url + '"')+'&format=xml&callback=?';  
  9.  
  10. $.getJSON(yql, function (datos) {
  11.     var _xml = $(datos.results[0]);
  12.        
  13.     $('#datos').html('<p><strong>'+_xml.find('title').text()+'</strong><br />'+_xml.find('media\\:description').text()+'</p>');
  14. });
  15. </head>
  16. <div id="datos">
  17. </div>
  18. </body>
  19. </html>

Saludos!
  #10 (permalink)  
Antiguo 24/11/2010, 18:27
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

dual3nigma, muchas gracias por tus respuestas. Justamente ayer en la noche me quedé hasta muy tarde averiguando sobre JSONp y cosas por el estilo buscando info sobre el cross-domain, la verdad es que hice un par de intentos con el método getJSON y no me funcionó, tenía sueño y probablemente hice algo mal, probaré tu ejemplo y te cuento.

Muchas gracias por la ayuda, te agredezco mucho, estamos en contacto :)
  #11 (permalink)  
Antiguo 24/11/2010, 20:39
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Lo probé y no me funcionó, pongo una alerta con el supuesto valor retornado pero sale 'undefined' =/

Dejo el código que puse:

Código Javascript:
Ver original
  1. //La lista 'list' ya tiene datos, contiene las ids de los videos, pero por ahora pruebo sólo con 1 url (la var url)
  2. for(var i in list) {
  3.     var url = 'http://gdata.youtube.com/feeds/videos/VurhzANQ_B0';
  4.     var YQL = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=xml&callback=?';
  5.  
  6.     $.getJSON(YQL, function(XMLData) {
  7.         vInfo[i] = $(XMLData.results[0]).find('title').text();
  8.         if(opts.description) vInfo[i,1] = $(XMLData.results[0]).find('media\\:description').text();
  9.     });
  10.  
  11.     alert(vInfo[i]);
  12. }

Tu lo probaste? Si es así, te funcionó?
Seguiré averiguando.
Saludos y gracias!

Última edición por de-troit; 24/11/2010 a las 20:55
  #12 (permalink)  
Antiguo 24/11/2010, 21:05
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Obvio que lo probe ¬¬ y obvio que me funciono, si no no lo hubiera posteado. Copiaste el codigo tal cual? tienes el jquery.min.js en esa carpeta? Mira te dejo una captura para que veas que funciona perfectamente.

  #13 (permalink)  
Antiguo 24/11/2010, 21:09
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Quizas puedas poner tu codigo completo, por que asi a simple vista se ve muy extraño :S Tendria que ver donde declaras la variable vInfo y como, esto esta mal vInfo[i,1]
  #14 (permalink)  
Antiguo 24/11/2010, 22:01
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Disculpa si te molestó el que preguntara si lo probaste, es sólo que me pareció raro que no me funcionara.Ahora he estado imprimiendo unos materiales, pero buscaré el error en seguida. Las buenas noticias es que funciona, debe ser un problema mío, descubiendo eso estoy OK.

Te dejo la función completa que está dentro de un objeto usando JSON:
Código Javascript:
Ver original
  1. getXMLinfo: function(list) {
  2.     var path = 'http://gdata.youtube.com/feeds/videos/';
  3.     var format = ie? 'text' : 'xml', vInfo = [];
  4.                    
  5.     for(var i in list) {
  6.         var url = path + list[i];
  7.         var YQL = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=xml&callback=?';
  8.  
  9.         $.getJSON(YQL, function(XMLData) {
  10.             vInfo[i] = $(XMLData.results[0]).find('title').text();
  11.             if(opts.description) vInfo[i,1] = $(XMLData.results[0]).find('media\\:description').text();
  12.         });
  13.  
  14.         alert(vInfo[i]);
  15.     }
  16. }
  17.  
  18. //Otra función me devuelve la lista, pero supongamos que la paso literalmente como parámetro:
  19. //Porsi el caso, he comprobado que los id's en la lista se retornan correctamente.
  20. var videosInfo = getXMLinfo([
  21.     'VurhzANQ_B0',
  22.     'ZXTC0SmgE2s',
  23.     'jUkoL9RE72o',
  24.     'Fi_GN1pHCVc',
  25.     'oJaBHSIRVlE',
  26.     '94bGzWyHbu0'
  27. ]);

Muchas gracias por todo, te estoy comunicando :)

Última edición por de-troit; 24/11/2010 a las 22:11
  #15 (permalink)  
Antiguo 24/11/2010, 23:05
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Pues mira, hay varios detalles que no estas considerando en tu código, por ejemplo la funcion "$.getJSON" es, como sabras, ajax (asincrona) osea que la funcion anonima que le pasas como parametro se ejecuta una vez que se recibe respuesta del servidor, por eso es que el alert te da undefined, segundo aun asi no estas declarando "vInfo" lo cual es otro error. Otra cosa es que en la parte donde tienes "vInfo[i,1]" cual es tu objetivo? osea entiendo que si tienes la opcion de mostrar descripcion la agregas pero a que? y por ultimo cual es el punto de "videosInfo"? si se supone que tendra la "informacion de los videos(titulo, descrpcion)" pues en ninguna parte de tu funcion getXMLinfo estas devolviendo ningun valor.

Bueno espero haberme explicado mas o menos bien, y que mis comentarios te sean de ayuda.

Saludos!
  #16 (permalink)  
Antiguo 24/11/2010, 23:32
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Mira hice un ejemplo rapido de lo que yo entiendo que quieres hacer, revisalo y me dices si te sirvio de algo, siquieres primero pruebalo tal cual para que veas su funcionamiento, le puse muchos comentarios
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <title>Cross Domain Ajax</title>
  4. <script src="jquery.min.js"></script>
  5. /**
  6.  * Con esta funcion cargas el feed de los videos
  7.  * y una vez que se han cargado todos llamas a la funcion "callback"
  8.  *
  9.  * @param {Array} list - Un arreglo con los id's de los videos
  10.  * @param {Function} callback - La funcion que se llama cuando todos los datos de los videos se han cargado
  11.  */
  12. function getXMLinfo(list, callback) {
  13.     var path = 'http://gdata.youtube.com/feeds/videos/',
  14.         videosInfo = [], // El array que contiene los datos de los videos
  15.         url, YQL,
  16.         cuantos = 0, total = list.length; // cuantos van cargados y cuantos son en total
  17.    
  18.     // por cada id de video
  19.     for(var i in list) {
  20.         url = path + list[i];
  21.         YQL = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=xml&callback=?';
  22.        
  23.         // Comenzar la carga del feed
  24.         $.getJSON(YQL, function (XMLData) {
  25.             // Otro consejo cuando use jquery trata de evitar repetir por todos lados
  26.             // $(XMLData.results[0]) y despues al rato $(XMLData.results[0]) otra vez
  27.             // mejor ponlo en una variable ok?
  28.             var feed = $(XMLData.results[0]);
  29.            
  30.             // Aqui vas poniendo todo en el array
  31.             videosInfo.push({titulo: feed.find('title').text(),
  32.                     descripcion: feed.find('media\\:description').text()});
  33.            
  34.             cuantos++;
  35.            
  36.             // Si ya se cargaron todos entonces llamas a la funcion que pusiste como callback
  37.             if(cuantos == total) callback.call(null, videosInfo);
  38.         });
  39.     }
  40. }
  41.  
  42. // Pasas los ids, y la funcion que se llamara cuando todo el contenido se cargue
  43. getXMLinfo([
  44.     'VurhzANQ_B0',
  45.     'ZXTC0SmgE2s',
  46.     'jUkoL9RE72o',
  47.     'Fi_GN1pHCVc',
  48.     'oJaBHSIRVlE',
  49.     '94bGzWyHbu0'
  50. ], function (info) { // Info es el array que getXMLinfo se llamaba videosInfo
  51.     var datos = $('#datos');
  52.    
  53.     // como ejemplo los meto en div#datos
  54.     for(var i in info) {
  55.         datos.append('<p><strong>'+info[i].titulo+'</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;'+info[i].descripcion+'</p>');   
  56.     }
  57. });
  58. </head>
  59. <div id="datos">
  60. </div>
  61. </body>
  62. </html>

Ah y te dejo una captura ¬¬ (para que luego no digas que no funciona) jajaja ntc

Saludos!
  #17 (permalink)  
Antiguo 24/11/2010, 23:37
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Bueno, pues si he declarado la variable vInfo literalmente, en la línea donde tengo esto:

Código Javascript:
Ver original
  1. var format = ie? 'text' : 'xml', vInfo = [];
  2. //Que es lo mismo que:
  3. var format = ie? 'text' : 'xml'; var vInfo = [];

Se me olvido poner el return, siempre lo hago al final, lo que pasa es que la función getXMLinfo aún está en construcción, no está terminado, pero al final, debería retornar una matriz con los valores obtenidos (título del video y descripción del video).
  #18 (permalink)  
Antiguo 24/11/2010, 23:38
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Te me adelantaste hahaha, a ver, revisaré lo que pusiste y te comento, muchas gracias por ayudarme tanto :D, como dije, soy nuevo en AJAX y no me manejo mucho.

Saludos!
  #19 (permalink)  
Antiguo 25/11/2010, 01:05
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Excelente, seguí parte de tus ejemplos y logré hacer que funcionara! :D
Pero tengo un problema, necesito que una variable miRecibidor reciba como retorno de la función getXMLinfo el array videosInfo con los datos obtenidos, de la forma:

Código Javascript:
Ver original
  1. var miRecibidor = getXMLinfo([
  2.     'VurhzANQ_B0',
  3.     'ZXTC0SmgE2s',
  4.     'jUkoL9RE72o',
  5.     'Fi_GN1pHCVc',
  6.     'oJaBHSIRVlE',
  7.     '94bGzWyHbu0'
  8. ]);

El problema es que videosInfo queda atrapada en la función que se pasa como parámetro a la función $.getJSON y no lo puedo retornar desde la función getXMLinfo :S

Tu en tu código pusiste un callback para poner los datos dentro del html, pero necesito sólamente guardar esos datos en una matriz como indiqué, ya que necesito utilizar estos datos después.

Hay alguna forma? :S

Última edición por de-troit; 25/11/2010 a las 02:47
  #20 (permalink)  
Antiguo 25/11/2010, 12:20
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

No, lo que quieres hacer no se puede, ya que como te comentaba, los contenidos los comienzas a cargar en la funcion $.getJSON pero el codigo se sigue ejecutando osea el for loop se termina de ejecutar, al trabajar con ajax tienes que esperar a que el contenido se cargue, por eso es necesario el callback.
  #21 (permalink)  
Antiguo 25/11/2010, 12:51
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

OK, creo que podré manejar la situación llamando al callback.

Oye dual3nigma, me podrías explicar cómo funciona el método getJSON? por lo visto hace una consulta SQL a una BD de Yahoo dependiendo de lo que ponga en la URL. Cómo es exactamente?

Otra cosa, al llamar a la función callback, por qué lo haces de la forma: callback.call(null, parámetros) y no llamándolo normalmente: callback(parámetros)?

Saludos y gracias!
  #22 (permalink)  
Antiguo 25/11/2010, 19:58
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Mira te explico rapidamente, por que es tema en realidad extenso. Como te comentaba no es posible cargar documentos de otro dominio, por razones de seguridad ya que esos documentos podrian contener codigo javascript, etc. Pero jQuery tiene una forma de interactuar con determinadas api's como la de flickr, yql, etc. que están hechas para funcionar de manera diferente (en realidad no se carga un documento, pero bueno eso es mas avanzado) el chiste es que YQL (Yahoo! Query Language)es una api especial que como puedes ver te permite hacer consultas un poco en el estilo de SQL a documentos xml, html, etc. te dejo el link de su consola de pruebas http://developer.yahoo.com/yql/console/ y lo de el callback se me olvido comentartelo pero pense que te seria util por lo que me decias de que estas haciendo un plugin para jQuery, la unica particularidad de utilizar Function.call es que el primer parametro (que puse en null) te permite asignar el valor que tendra "this" en la funcion de callback, si no lo pones this == window ok?

Espero haberme explicado bien y haberte sido de ayuda

Saludos!
  #23 (permalink)  
Antiguo 25/11/2010, 20:14
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Ok, me queda un poco más claro, averiguaré con más profundidad al respecto.
Lo otro que te iba a preguntar (si es que sabes), es por qué al obtener el valor de la etiqueta <media:description> en explorer, lo devuelve vacío? Con title no ocurre, sólamente con media:description, en los demás navegadores anda todo perfecto.

Alguna idea?
Saludos! :)
  #24 (permalink)  
Antiguo 25/11/2010, 20:21
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

Ya lo solucioné, estuve analizando los datos en formato JSON en el link de la consola del YQL que me enviaste, y me dí cuenta que para explorer había que poner sólamente .find('description'), en cambio para los demás, .find('media:\\description')

Por qué debe ser así? No debería ser para explorer también como para los demás? porque la función getJSON, en este caso, obtiene los datos en formato XML o no?

Otra pregunta, por qué pones var feed = $(XMLData.results[0])?, a qué s debe el results[0]?

Saludos!

Última edición por de-troit; 25/11/2010 a las 21:12
  #25 (permalink)  
Antiguo 25/11/2010, 22:36
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Ayuda para obtener info de XML mediante JS

Pues si buscas un poco más, verás que en realidad eso de los "namespaces" tanto de xml como de html es algo complicado, da muchos problemas en realidad aun en los frameworks mas conocidos, bueno es con lo que yo me he topado, por eso siempre he preferido hacer el procesamiento del xml del lado del servidor, mira te explico rapido, a YQL le pides los contenidos del xml, en formato xml (obvio) lo ideal seria en json pero tampoco maneja bien lo de los namespaces, entonces jquery los carga pero los carga como si fuera json, osea que hace un objeto, results es donde normalmente estaria todo en json, pero como solo es un xml, por eso se pone en el indice 0 y ya, me explico?

Como te decia en jQuery y en otros frameworks, eso de los "namespaces" esta amm... "buggy" todavia.

Suerte con eso!
  #26 (permalink)  
Antiguo 25/11/2010, 23:48
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda para obtener info de XML mediante JS

OK.

Al final cambié el tipo de retorno de datos a JSON, lo probé en Explorer 8, Firefox 3.6, Chrome 7, Safari 5.0.2, Opera 10.62, Netscape 9 y funciona bien! :D

Saludos y gracias por todo!

Etiquetas: ajax, info, js, 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 19:22.