Leggere un Feed RSS con ASP.NET ed XSL
In un precedente articolo abbiamo visto com'è semplice trasformare XML con XSL in ASP.NET, questo sistema, tuttavia, non consente di trasformare un Feed RSS, dal momento che il file XML, in questo caso, non si trova sullo stesso server che esegue lo script, bensì su di un server remoto.
Vediamo quindi come leggere un Feed RSS con ASP.NET, utilizzando XSL per eseguire la trasformazione e gestire la formattazione a video dell'output finale.
Il file XSL
Prima di passare al codice ASP.NET da utilizzare (che sfrutterà i namespaces System.IO, System.Xml e System.Xml.Xsl) diamo un occhio al codice XSL che sarà contenuto nel file feed.xsl e posizionato nella stessa cartella in cui si troverà il file ASP.NET che eseguirà lo script:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<xsl:for-each select="rss/channel/item">
<p>
<a href="{link}"><b><xsl:value-of select="title" /></b></a><br />
<xsl:value-of select="description" /><br />
<i>Scritto da <xsl:value-of select="author" /> in data <xsl:value-of select="pubDate" /></i>
</p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Andiamo dunque ad estrarre dal nodo in cui sono contenute le notizie - ovvero "rss/channel/item" - i campi title, description, author e pubDate che contengono, rispettivamente, i dati relativi al titolo, alla descrizione, all'autore ed alla data in cui la news è stata scritta.
Lo script ASP.Net
Passiamo alla scrittura del codice ASP.NET che sfrutta le classi XmlDocument ed XslTransform, quindi gli oggetti StringBuilder e StringWriter.
Ecco il codice completo:
<%@Page Language="VB"%>
<%@Import Namespace="System.IO"%>
<%@Import Namespace="System.Xml"%>
<%@Import Namespace="System.Xml.Xsl"%>
<script language="VB" runat=server>
Sub Page_Load(sender As Object, e As EventArgs)
Dim CaricaXML As XmlDocument = New XmlDocument()
CaricaXML.Load("http://www.mrwebmaster.it/rss/news.xml")
Dim CaricaXSL As XslTransform = New XslTransform()
CaricaXSL.Load(Server.MapPath("feed.xsl"))
Dim sb As StringBuilder = New StringBuilder()
Dim sw As StringWriter = New StringWriter(sb)
CaricaXSL.Transform(CaricaXML, Nothing, sw)
risultato.Text = sb.ToString()
End Sub
</script>
<html>
<head>
<title>Leggere un Feed RSS con ASP.NET ed XSL</title>
</head>
<body>
<form id="modulo" runat="server">
<asp:literal id="risultato" runat="server" />
</form>
</body>
</html>
Una volta recuperato il Feed RSS remoto (per l'esempio abbiamo scelto uno dei Feed RSS di Mr.Webmaster) lo carichiamo per poi caricare il documento XSL che si occuperà, come già detto, della formattazione.
Eseguiamo la trasformazione e stampiamo il risultato finale in un tag testuale lato server messo a disposizione dal .NET Framework.







