ActionScript - Problema cargando RSS

 
Vista:

Problema cargando RSS

Publicado por Chipi (2 intervenciones) el 02/12/2006 00:15:16
Hola a todos. Estoy intentando cargar este RSS:

http://www.elpais.com/rss/rss_section.html?anchor=elpportec

El RSS se carga sin problemas en iexplorer y firefox; pero cuando intento cargarlo como XML desde actionscript lo hace mal, el parser se ha saltado gran parte del texto.

Si cópio el código XML resultante después de cargarlo vía actionscript y lo guardo en disco, al abrirlo con el navegador web da un error.

Es como si se comiera o no entendiera en algunos casos el cierre del tag CDATA.

¿Alguna idea?

¡¡GRACIAS!! :D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cargar y parsear un RSS en Flash con problemas de formato

Publicado por Alejandro (369 intervenciones) el 22/06/2023 22:08:56
Al cargar y parsear un RSS en Flash, es importante tener en cuenta que algunos feeds pueden tener problemas de formato que afecten la correcta interpretación de los datos. En el caso que mencionas, es posible que el cierre del tag CDATA no se esté interpretando correctamente.

Una solución posible es utilizar el método `XML.ignoreWhitespace` para omitir los espacios en blanco y saltos de línea que puedan interferir con el parseo del RSS. Además, puedes utilizar la clase `XMLSocket` en lugar de `XML` para obtener un mayor control sobre la carga y parseo del RSS.

Aquí tienes un ejemplo de cómo podrías cargar y parsear el RSS utilizando `XMLSocket`:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import flash.net.XMLSocket;
 
var rssSocket:XMLSocket = new XMLSocket();
rssSocket.ignoreWhite = true;
 
rssSocket.onData = function(data:String) {
  var rssXML:XML = new XML(data);
 
  // Parsear y acceder a los datos del RSS
  var channelNode:XMLNode = rssXML.firstChild.firstChild;
  var items:Array = channelNode.childNodes;
 
  // Recorrer los elementos del RSS
  for (var i:Number = 0; i < items.length; i++) {
    var itemNode:XMLNode = items[i];
 
    // Acceder a los datos individuales (título, descripción, enlace, etc.)
    var title:String = itemNode.firstChild.firstChild.nodeValue;
    var description:String = itemNode.childNodes[1].firstChild.nodeValue;
    var link:String = itemNode.childNodes[2].firstChild.nodeValue;
 
    // Hacer algo con los datos obtenidos
    trace("Título: " + title);
    trace("Descripción: " + description);
    trace("Enlace: " + link);
  }
};
 
rssSocket.connect("www.elpais.com", 80);
rssSocket.send("GET /rss/rss_section.html?anchor=elpportec HTTP/1.0\r\n\r\n");

En este ejemplo, creamos un objeto `XMLSocket` llamado `rssSocket` y establecemos la propiedad `ignoreWhite` en `true` para ignorar los espacios en blanco y saltos de línea. Luego, definimos la función `onData` para manejar los datos recibidos.

Dentro de la función `onData`, creamos un objeto `XML` a partir de los datos recibidos y accedemos a los nodos y valores del RSS según su estructura. En este caso, asumimos que el título se encuentra en el primer nodo hijo, la descripción en el segundo y el enlace en el tercero.

Finalmente, podemos hacer algo con los datos obtenidos, como imprimirlos en la consola o utilizarlos en otras partes de la aplicación.

Recuerda adaptar el código a tus necesidades y asegurarte de que la URL del RSS y los nodos de datos coincidan con la estructura del feed que estás intentando cargar.

Espero que esta solución te ayude a cargar y parsear correctamente el RSS en Flash. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar