Hier ein kleines Widget, das mit SWX und SWXml realisiert wurde. SWXml ist ein generischer XML Parser, mit dem man auf einfache Weise auf die Informationen eines Feeds zugreifen kann.

Das Widget liest den RSS Feed von swxformat.org und zeigt die letzten fünf Beiträge. Klickt man auf einen Beitrag, kommt man zum vollständigen Artikel.

Der Aufruf der SWXml-Serviceklasse erfolgt beim Aufrufen des SWX-Calls. Nachdem SWXml den Feed gelesen und in ein Array gewandelt hat, erhält man das Resultat in Flash zurück. Die Informationen können nun in der Funktion "resultHandler" verarbeitet werden.

Die Quelldateien dieses Beispiels habe ich dem SWXml-Download hinzugefügt (SWXml: XML API for SWX).

Actionscript:
  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. // SWXml
  4. //
  5. // Florian Plag / www.video-flash.de
  6. // All SWX sample applications are released under the open source
  7. // MIT License (http://www.opensource.org/licenses/mit-license.php).
  8. //
  9. // This version uses the SWX ActionScript Library.
  10. //
  11. //////////////////////////////////////////////////////////////////////
  12.  
  13. import org.swxformat.*;
  14. import mx.utils.Delegate;
  15.  
  16. var swx:SWX;
  17. var myFeed:Array;
  18. var callDetails:Object =
  19.     {
  20.         serviceClass: "SWXml",
  21.         method: "parseXML",
  22.         args: ["http://swxformat.org/feed/rss2/"],
  23.         result: [this, resultHandler],
  24.         timeout: [this, timeoutHandler],
  25.         debug: true
  26.     }
  27.  
  28.    
  29.    
  30. init();
  31.  
  32. // Carry out SWX call.
  33. swx.call(callDetails)
  34.    
  35.    
  36.    
  37. // ::::::::::::::::::::::::::::::::
  38. // :::::::: init ::::::::::::::::::
  39. // :::::::::::::::::::::::::::::::: 
  40.  
  41. function init()
  42. {
  43.  
  44.    
  45.     // Create a new SWX object
  46.     swx = new SWX();
  47.    
  48.     // swx.gateway = "http://localhost:8888/php/swx.php";   
  49.     swx.gateway = "http://www.video-flash.de/swx/php/swx.php";
  50.     swx.encoding = "GET";
  51.    
  52. }
  53.  
  54.  
  55.  
  56. // ::::::::::::::::::::::::::::::::
  57. // :::::::: resultHandler :::::::::
  58. // ::::::::::::::::::::::::::::::::
  59.  
  60. function resultHandler(event:Object)
  61. {
  62.    
  63.     var i:Number;
  64.    
  65.     // save result
  66.     myFeed =  event.result;
  67.    
  68.     // :::::::: TITLE ::::::::::
  69.    
  70.     // set title
  71.     myTitle.dynamicText.text = myFeed.rss[0].channel[0].title[0].text;
  72.    
  73.     // onRelease function for title
  74.     myTitle.onRelease = function() {
  75.         // goto URL
  76.         getURL(myFeed.rss[0].channel[0].link[0].text);
  77.     }
  78.    
  79.    
  80.     // :::::::: ITEMS ::::::::::
  81.    
  82.     // set items
  83.     for (i=0; i<5; i++) {
  84.        
  85.         // read title of entry
  86.         var s:String =  myFeed.rss[0].channel[0].item[i].title[0].text;
  87.        
  88.         // cut after 50 chars if neccessary
  89.         if (s.length> 50) {
  90.             s = s.substr(0, 50) + "...";
  91.         }
  92.        
  93.         // set item text
  94.         this["item" + i].dynamicText.text = s;
  95.  
  96.         // create id
  97.         this["item" + i].id = i;
  98.        
  99.         // onRelease function
  100.         this["item" + i].onRelease = function() {
  101.            
  102.             // goto URL
  103.             getURL(myFeed.rss[0].channel[0].item[this.id].link[0].text);
  104.         }
  105.        
  106.     }
  107.  
  108.  
  109. }
  110.  
  111.  
  112. // :::::::::::::::::::::::::::::::::
  113. // :::::::: timeoutHandler :::::::::
  114. // :::::::::::::::::::::::::::::::::
  115.  
  116. function timeoutHandler(event:Object)
  117. {
  118.     trace ("timeout");
  119. }
  120.  
  121. // ::::::::::::::::::::::::::::::::
  122. // :::::::: isLoading :::::::::::::
  123. // ::::::::::::::::::::::::::::::::
  124.  
  125. function isLoading(state:Boolean)
  126. {
  127.     trace ("loading");
  128. }