Utilizzare la classe XmlDataDocument per leggere un Feed RSS

di , in UserScript, ASP.NET, System.Xml,

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

Visualizza/aggiungi commenti

Utilizzare la classe XmlDataDocument per leggere un Feed RSS (#544) 8 10 195
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi