Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Considerazioni e conclusioni

Aprire file XML remoti.
Aprire file XML remoti.
Link copiato negli appunti

L'applicazione RSS newsreader Flash - XML è un esempio su come possiamo utilizzare Flash per sviluppare applicazioni interattive e dinamiche in pochissimi KByte! 

Per quanto riguarda la possibilità di caricare documenti XML remoti direttamente su un filmato Flash aperto su Browser abbiamo già detto che questo non è possibile per via delle limitazioni del plug-in. Ad ogni modo possiamo utilizzare uno stratagemma per raggirare il problema creando uno script lato server (realizzato anche in ASP) che carica il documento XML remoto e lo fornisce in output o ne crea uno nuovo. In questo caso la provenienza del documento XML è la stessa di quella del filmato SWF, in quanto risiedono sullo stesso server. 

Esaminiamo i due casi:

  1. Nel primo caso lo script lato server carica l'XML e lo porta in output 
  2. Nel secondo caso lo script lato server carica l'XML, lo elabora e ne crea unonuovo che porta in output.

Nel primo caso l'operazione è sicuramente molto veloce mentre nel secondo caso però il documento XML viene processato due volte: la prima volta dallo script ASP che lo carica, legge i nodi ed il contenuto e ne crea un altro inserendo i dati che ci interessano, la seconda volta da Flash che esegue praticamente la stessa cosa. Abbiamo quindi teoricamente un leggero incremento dei tempi di elaborazione (anche se alla fine facendo un test pratico la differenza è impercettibile). 

Abbiamo poi un altro svantaggio che è quello di dover scrivere due script per elaborare il documento XML, uno lato server (nel nostro caso abbiamo usato l'ASP) e l'altro lato client ovvero il codice Action Script del filmato. Questo potrebbe incrementare leggermente i tempi di sviluppo dell'applicazione. Questo svantaggio "apparente" cela però un vantaggio non trascurabile, ovvero la possibilità di "filtrare" il documento XML grazie allo script lato server, facendo passare solo le informazioni e i dati che ci interessano realmente. Se alla nostra applicazione Flash servono solo determinati dati estrapolati da un documento XML, possiamo implementare il codice dello script lato server in modo tale da creare in output un documento XML differente. Questo è un grosso vantaggio. Attraverso lo script ad esempio possiamo rendere meno pesante un documento XML eliminando le informazioni superflue e che non ci interessano. Oppure possiamo modificare i TAG di un documento XML affinché possa essere elaborato da una nostra applicazione Flash.

Abbiamo quindi trasformato il nostro svantaggio in un vantaggio; è un po' come la storia del bicchiere: lo vedete mezzo pieno o mezzo vuoto? :)

Per vedere l'esempio on line: http://www.enricolai.com/rss/xmlext.html

In questo esempio sul browser potete inserire un URL di un documento RSS (o RDF) remoto e cliccare su Load. 

Il pulsante richiama questa funzione:

function ApriXMLitem () {
  _root.loading = "Loading XML data...";
 mioxml = new XML();
 filexml = "http://www.enricolai.com/rss/red_xml.asp?url="+url;
 mioxml.load(filexml);
 mioxml.onLoad = ElaboraXML;
  
 function ElaboraXML (success) {
  if (mioxml.loaded) {
  txt = mioxml.toString();
   _root.loading = mioxml.loaded
  } else {
   _root.loading = "Error opening XML data.";
  }
  ;
   delete mioxml;
 };
};

Come potete notare dal codice Action Script Flash non carica direttamente il documento XML dall'URL remoto, ma richiama uno script ASP al quale passa il valore dell'URL da caricare  (filexml = "http://www.enricolai.com/rss/red_xml.asp?url="+url; ).

Vediamo infine lo script ASP che carica e ricrea un documento XML RSS (red_xml.asp):

<% 
' Script ASP che rielabora un documento XML RSS e RDF e fornisce in output un
documento RSS semplificato
Sub RSS (URL) 

  Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0") 
objXML.async = false 
  objXML.setProperty "ServerHTTPRequest", True 

  ' validazione del documento XML
   objXML.validateOnParse =false' true 

  ' non conservare spazi 
  objXML.preserveWhiteSpace = false 
blnLoaded = objXML.Load(URL) 
If Not blnLoaded Then 
Response.write "<error>Error</error>" 
Else 
set objNodeList = objXML.getElementsByTagName("channel") 
For Each objNode In objNodeList 
For Each objNode2 In objNode.childNodes 
   
Select Case objNode2.nodeName 
   Case "title" 
      xmldoc = xmldoc+"<title>"+ objNode2.firstChild.nodevalue
+"</title>"
Case "link" 
       xmldoc = xmldoc+"<link>"+ objNode2.firstChild.nodevalue
+"</link>"
Case "description" 
      xmldoc = xmldoc+"<description>"+
objNode2.firstChild.nodevalue +"</description>"
   Case "language" 
      xmldoc = xmldoc+"<language>"+
objNode2.firstChild.nodevalue +"</language>"
End Select 
  Next 
 Next 

Set objNodeList = objXML.getElementsByTagName("item") 
For Each objNode In objNodeList 
For Each objNode2 In objNode.childNodes 
     Select Case objNode2.nodeName 
     Case "title" 
       strTitle = objNode2.firstChild.nodevalue 
     Case "link" 
        strURL = objNode2.firstChild.nodevalue 
     Case "description" 
        strDescription = objNode2.firstChild.nodevalue 
     End Select 
Next 

 xmldoc = xmldoc + "<item><title>" + strTitle + "</title>" + "<link>" +
strURL +"</link>"+ + "<description>" + 
strDescription +"</description></item>"

    strTitle = "" 
    strURL = "" 
    strDescription = "" 

    Next 

 'IMPOSTO L'OUTPUT DEL FILE SU XML
  response.ContentType = "text/xml"
 'aggiungo i tag rss e channel
 xmldoc = "<rss><channel>"+xmldoc+"</channel></rss>"
Response.write (xmldoc)
set objNodeList = Nothing 
   End if 

End sub 

' Parametro che viene passato da Flash
url=request("url")

call RSS(url) 
%>

Se invece volete usare uno script (ASP) che non elabora l'XML ma che lo carica e lo porta direttamente in output potete utilizzare questo codice (gentilmente concesso da Stefano Baire http://www.stefanobaire.com):

<% 
response.ContentType="text/xml" 
Response.CacheControl = "no-cache" 
Response.AddHeader "Pragma", "no-cache" 
Response.Expires = -1 
Response.Buffer = TRUE 

Urlxml = request("url")
RemoteXML = getHttpFile(Urlxml,"GET" ) 
response.write(RemoteXML) 

function getHttpFile(sUrl, sHTTPType) 
Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP") 
xml.Open sHTTPType, sUrl, False 
xml.Send 
getHttpFile = xml.responseText 
Set xml = Nothing 
end function 
%>

Per scaricare i files ralativi a questo esempio: http://www.enricolai.com/download/xmlext.zip 

Sulla base di queste considerazioni la nostra applicazione Flash RSS Newsreader potrebbe essere modificata per funzionare quindi anche su un browser web.

Per scaricare tutti i files ralativi all'RSS NewsReader andate a questo indirizzo: http://www.enricolai.com/download/RSSnewsreader.zip

Come installare l'applicazione:

  1. Creare un cartella sul vostro server (accertandovi che questo supporti ASP eAccess)
  2. Aprire i files ASP e modificare il percorso del Data Base
  3. Mettere tutti i files ASP e il Data Base Access nella cartella creata
  4. Aprire quindi il file RSSreader.FLA, modificare il percorso del server e creare il file SWF
  5. Aprire in locale il filmato Flash RSSreader.SWF accertandovi di essere connessi ad internet


Ti consigliamo anche