Introduzione
In questo articolo, vediamo come utilizzare la classe SyndicationFeed per gestire i feed dei siti.
I feed non sono altro che file xml con determinate informazioni.
Il file contiene alcuni tag comuni, come title, description, data ed altro ancora.
In questo articolo vedremo come gestire le informazioni dei siti.
Il designer della form
Si crea un nuovo progetto web o windows, a seconda delle proprie esigenze, nel nostro caso utilizzeremo il web, anche se la parte Windows si differenzia di poche parti.
Inseriamo nella pagina web, una label, che avrà il compito di visualizzare i dati ed una listbox, la quale al click sulla singola voce aprirà una pagina web relativa alla voce selezionata.
Stesura del codice
Aggiungiamo un riferimento al nostro progetto appena creato, tramite la finestra di esplora soluzioni, facciamo click con il tasto destro sul nome del progetto e selezioniamo dal menu di scelta rapida la voce “Aggiungi riferimenti”.
Nella finestra che viene aperta, selezioniamo la voce “System.ServiceModel”.
Terminata tale operazione, passiamo in visualizzazione codice.
Aggiungiamo lo spazio dei nomi, che ci permettono di utilizzare le classi opportune, come la gestione dei dati, dei feed e XML.
Qui di seguito si riporta la dichiarazione dei spazio dei nomi per entrambi i linguaggi (VB.Net e C#).
VB.Net
'spazio dei nomi
Imports System.Xml
Imports System.ServiceModel.Syndication 'System.servicesmodel
Imports System.Data
C#
//spazio dei nomi
using System.Xml;
using System.ServiceModel.Syndication;
using System.Data;
Nell’evento load scriviamo il codice che ci permette di caricare la listbox con le informazioni del post.
Ricordiamo che il feed xml viene preso da un file xml in questo esempio utilizzare quello di un blog http://emanuelemattei.blogspot.com/feeds/posts/default
Qui di seguito si riporta il codice completo dell’evento load della pagina web in VB.Net e C#
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
Dim dttDati As New DataTable
Dim ColonnaTitolo As New DataColumn("Titolo")
Dim ColonnaLink As New DataColumn("Link")
dttDati.Columns.Add(ColonnaTitolo)
dttDati.Columns.Add(ColonnaLink)
'carico lettore XML
Dim readerXML As XmlReader = XmlReader.Create("
http://emanuelemattei.blogspot.com/feeds/posts/default")
'leggo il feed
Dim rssFeed As SyndicationFeed = SyndicationFeed.Load(readerXML)
'imposto il titolo
lbltitolo.Text = rssFeed.Title.Text & " " & " " & rssFeed.Links(0).Uri.AbsoluteUri
'seleziono i primi 5
For Each rssItem In rssFeed.Items.Take(5)
Dim riga As DataRow = dttDati.NewRow()
riga("Titolo") = rssItem.PublishDate.ToString("s") + " " + rssItem.Title.Text
riga("Link") = rssItem.Links(4).Uri.AbsoluteUri
dttDati.Rows.Add(riga)
Next
ListBox1.DataTextField = "Titolo"
ListBox1.DataValueField = "Link"
ListBox1.DataSource = dttDati
ListBox1.DataBind()
End If
End Sub
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dttDati = new DataTable();
DataColumn ColonnaTitolo = new DataColumn("Titolo");
DataColumn ColonnaLink = new DataColumn("Link");
dttDati.Columns.Add(ColonnaTitolo);
dttDati.Columns.Add(ColonnaLink);
//carico lettore XML
XmlReader readerXML = XmlReader.Create("
http://emanuelemattei.blogspot.com/feeds/posts/default");
//leggo il feed
SyndicationFeed rssFeed = SyndicationFeed.Load(readerXML);
//imposto il titolo
lbltitolo.Text = rssFeed.Title.Text + " " + " " + rssFeed.Links[0].Uri.AbsoluteUri;
//seleziono i primi 5
foreach (SyndicationItem rssItem in rssFeed.Items.Take(5))
{
DataRow Riga = dttDati.NewRow();
Riga["Titolo"] = rssItem.PublishDate.ToString("s") + " " + rssItem.Title.Text;
Riga["Link"] = rssItem.Links[4].Uri.AbsoluteUri;
dttDati.Rows.Add(Riga);
}
ListBox1.DataTextField = "Titolo";
ListBox1.DataValueField = "Link";
ListBox1.DataSource = dttDati;
ListBox1.DataBind();
}
}
Come si vede dal codice, si sono creati degli oggetti per gestire le informazioni, come un datatable, datacolum e datarow.
La classe Syndacationfeed gestisce le informazioni del feed, provienente da un oggetto xmlreader il quale avrà il compito di gestire i dati dal feed sul web.
Ora non ci resta che scrivere il codice per l’evento “SelectedIndexChanged” che si verifica quando si seleziona un elemento nella lista. Il codice dovrà aprire la pagina web relativa alla notizia selezionata nella lista.
Qui di seguito si riporta il codice per tali operazioni.
VB.Net
Protected Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.SelectedIndexChanged
System.Diagnostics.Process.Start(ListBox1.SelectedValue)
End Sub
C#
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(ListBox1.SelectedValue);
}
Conclusioni
L’articolo ha voluto fornire al lettore le informazioni per leggere i feed dei siti e blog. Tale tecnica si può utilizzare anche in ambiente Windows.