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>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.