Nicht neu, aber sehr nützlich und jetzt auch mit Flash CS3 möglich: die Open-Source-ActionScript-Library as3syndicationlib zum Parsen von RSS- und ATOM-Feeds. Für alle Feedtypen wird ein einheitliches Interface genutzt, wie auf die Einträge im Feed zugegriffen werden.

Da die Library für Flex geschrieben wurde und einige Flex-spezifische Klassen nutzt, funktioniert sie standardmäßig nicht mit Flash CS3. Hierzu muss man einige Zeilen im Quellcode austauschen.

Um die Klassen funktionsfähig mit Flash CS3 zu machen, geht man so vor:

  • Ersetzen von import mx.utils.StringUtil durch com.adobe.utils.StringUtil (in der Datei "com/adobe/xml/syndication/ParsingTools.as" und in "com/adobe/xml/syndication/rss/Channel20.as")
  • Man benötigt die Datei DateBase.as von Martin Legris und kopiert sie in "com/adobe/utils"
  • Man ersetzt import mx.utils.DateBase durch import com.adobe.utils.DateBase (in der Datei "com/adobe/utils/DateUtil.as")

Das folgende Beispiel zeigt, wie as3syndicationlib funktioniert. Es wird einfach der Titel (Headline) jedes Feed-Items meines Blog-Feeds in einer Listen-Komponente angezeigt.

Der Quellcode lautet:

Actionscript:
  1. import com.adobe.utils.XMLUtil;
  2. import com.adobe.xml.syndication.rss.*;
  3.  
  4. import flash.events.*;
  5. import flash.net.*;
  6. import fl.data.DataProvider;
  7. import fl.controls.List;
  8.  
  9. // neuer data provider für die list component
  10. var dp:DataProvider = new DataProvider();
  11.  
  12. // data provider als quelle angeben
  13. myList.dataProvider = dp;
  14.  
  15. // neuer loader
  16. var loader:URLLoader = new URLLoader();
  17.  
  18.  
  19. //request pointing to feed
  20. var request:URLRequest = new URLRequest("http://www.video-flash.de/index.php/feed/");
  21.  
  22. // event listener (daten geladen / error / security error)
  23. loader.addEventListener(Event.COMPLETE, onDataLoad);
  24. loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
  25. loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
  26.  
  27. // laden starten
  28. loader.load(request);
  29.  
  30.  
  31. /**
  32. /* Diese Funktion wird aufgerufen, wenn die Daten geladen sind
  33. */
  34.  
  35. function onDataLoad(e:Event):void {
  36.    
  37.     //get the raw string data from the feed
  38.     var rawRSS:String = URLLoader(e.target).data;
  39.  
  40.     // Validierung mit der XMLUtil.isValidXML API (corelib library)
  41.     if(XMLUtil.isValidXML(rawRSS)) {
  42.  
  43.         // neue RSS20 Instanz
  44.         var rss:RSS20 = new RSS20();
  45.  
  46.         //Rohdaten parsen
  47.         rss.parse(rawRSS);
  48.  
  49.         // all items im Feed in einem Array abspeichern
  50.         var items:Array = rss.items;
  51.        
  52.         // jedes Item durchlaufen
  53.         for each(var item:Item20 in items) {
  54.             dp.addItem( { label: item.title } );
  55.         }
  56.  
  57.     }   
  58.    
  59.     // nicht valide
  60.     else {
  61.        
  62.         txtField.text = "Keine valide XML-Datei.";   
  63.  
  64.     }
  65. }
  66.  
  67.  
  68.  
  69. /**
  70. /* Fehler
  71. */
  72.  
  73. function onIOError(e:IOErrorEvent):void {
  74.     trace("IOError : " + e.text);
  75.  
  76. }
  77.  
  78. function onSecurityError(e:SecurityErrorEvent):void {
  79.     trace("SecurityError : " + e.text);
  80. }

Hinweis: Es werden auch die Klassen der as3corelib benötigt, die ebenfalls Open Source sind. Man muss die zwei Libraries einfach "zusammenkopieren".

Link: as3syndicationlib und as3corelib
Link: Parsing RSS 2.0 Feeds in ActionScript 3