#544 - Utilizzare la classe XmlDataDocument per leggere un Feed RSS
Come già anticipato nel mio blog, vediamo un esempio per l'approccio alla lettura di feed RSS, per importarli sul proprio sito facendo uso della classe XmlDataDocument e di un DataTable.
L'esempio consiste di tre metodi che vengono richiamati in base a degli eventi e che riempiono un DataTable e un oggetto Cache per non richiamare il feed ad ogni richiesta.
E' necessario per prima cosa aggiungere questo codice al global.asax:
<%@ Import Namespace="System.Data" %>
<SCRIPT RUNAT="SERVER">
'viene richiamata nel momento in cui la cache scade e
'quindi ricarica di nuovo l'oggetto chiamando la sub caricalmlog()
Sub Rimuovi(S As String, O As Object, C As CacheItemRemovedReason)
caricalmlog()
End Sub
'viene richiamata ogn volta che riparte il web server
Sub application_start(Sender As Object, E As EventArgs)
caricalmlog()
End sub
'questo è il metodo che esegue tutte le operazioni sul Feed RSS e su DataTable
Sub caricalmlog()
try
Dim url as String = "http://dominio/feed.aspx" 'indirizzo del feed RSS
Dim objTable As New DataTable("feed") 'oggetto DataTable
'creo le colonne del DataTable
Dim objColumn As DataColumn
objcolumn = objTable.Columns.Add("title", System.Type.GetType("System.String"))
objcolumn = objTable.Columns.Add("description", System.Type.GetType("System.String"))
Dim objdr as datarow
'istanza all'oggetto XmlDataDocument
Dim xmldoc As New system.xml.XmlDataDocument
'leggo tutto il documento XML partendo sall'indirizzo assegnato
xmldoc.load(url)
'istanza all'oggetto XmlNodeList e utilizzo del metodo GetElementsByTagname passandogli il nome dei nodi interessati
Dim row As System.Xml.XmlNodeList = xmldoc.GetElementsByTagname("item")
'istanza di XmlNode per navigare attraverso i nodi contenuti nell'oggetto XmlNodeList
Dim objnode As System.Xml.XmlNode
'ciclo per leggere tutti i nodi e i campi in esso contenuti
for each objnode in row
'apro una nuova riga
objdr = objtable.newrow()
'associo il nome del tag all'interno del nodo al campo nel DataTable
objdr("title") = objnode("title").Innertext
objdr("description") = objnode("description").Innertext
'aggiungo la nuova riga
objtable.rows.add(objdr)
next
Dim Remove as New CacheItemRemovedCallback(AddressOf Me.Rimuovi)
HttpRuntime.Cache.Insert("feed",objtable,Nothing,DateTime.Now.AddHours(3), TimeSpan.Zero, CacheItemPriority.Normal, Remove)
'distruggiamo gli oggetti
xmldoc = nothing
row = nothing
objnode = nothing
catch exc As Exception
response.write(exc.tostring())
end try
End Sub
</SCRIPT>Si dovrà poi creare una pagina come questa per testare il tutto:
<%@ Import Namespace="System.Data" %>
<SCRIPT RUNAT="SERVER">
Sub Page_Load()
lmlog.DataSource = cache("feed").DefaultView
lmlog.DataBind()
End Sub
</SCRIPT>
<asp:datalist id="lmlog" runat="server">
<HeaderTemplate>
<h1 style="color: #111;">Titolo</h1>
</HeaderTemplate>
<ItemTemplate>
<div style="font-size: 16pt;font-style: bold; color: #F5730F;"><%# Container.DataItem("title")%></div>
<div><%# Container.DataItem("description") %></div>
</ItemTemplate>
</asp:datalist>Approfondimenti
- #909 - Un custom control per recuperare da web.config il formato dell'URL di ImageField
- #13 - Invocare il PostBack di un controllo ASP.NET da Silverlight
- Introduzione a LINQ, LINQ to XML, Object e DataSet
- Cosa fare se la vostra applicazione ASP o ASP.NET è vittima di SQL injection
- Il mio progetto di migrazione ad ASP.NET 3.5: ASPItalia.com e WinFXItalia.com
- #900 - Rimuovere dalla cache una pagina in OutputCache
- #910 - Incrementare le performance di ASP.NET rimuondo gli HttpModule non necessari
- #929 - Impersonation di utente per l'esecuzione di codice in una pagina ASP.NET
- #928 - Proteggere il ViewState di ASP.NET criptandolo
- #38 - Eseguire una query su file XML con LINQ
- Beta 2 per Internet Explorer 8
- Il nostro nuovo imminente libro in prenotazione: ASP.NET 3.5 per tutti
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
