Artikel ini membahas tentang bagaimana caranya membaca file RSS yang menggunakan RSS 2.0 format dan ditampilkan di aplikasi yang kita buat sendiri. Contoh client app yang saya buat disini yaitu ASP.NET 3.5. Saya tidak akan membahas apa itu RSS file beserta format yang dapat digunakan untuk membuatnya, untuk lebih jelasnya dapat anda temukan di beberapa literatur yang tersedia di internet.
Contoh potongan kode dari isi file RSS (http://native-enterprise.net/rss.xml)dengan format RSS 2.0 dapat dilihat pada gambar dibawah ini :

Ok, sekarang kita buat terlebih dahulu control yang akan digunakan untuk menampilkan konten dari file RSS tersebut. Pada contoh ini saya implementasikan di UserControl dengan menambahkan control GridView.

Buka code behind UserControl tersebut diatas dan tambahkan class berikut ini yang digunakan sebagai object dummy untuk menampung hasil dari proses pembacaan file RSS :
Public Class RssFeedDetails
Private mTitle As String
Public Property Title() As String
Get
Return mTitle
End Get
Set(ByVal value As String)
mTitle = value
End Set
End Property
Private mLink As String
Public Property Link() As String
Get
Return mLink
End Get
Set(ByVal value As String)
mLink = value
End Set
End Property
Private mPubDate As String
Public Property PubDate() As String
Get
Return mPubDate
End Get
Set(ByVal value As String)
mPubDate = value
End Set
End Property
End Class
Deklarasikan class level variabel berikut di UserControl class. Variabel tersebut fungsinya sebagai generic collection dari RssFeedDetails class).
Dim listFeed As New List(Of RssFeedDetails)
Buat sebuah prosedur sebagai handler yang akan dieksekusi apabila proses pembacaan remote RSS file nya selesai. Perhatikan input parameter yang kedua, kita harus mendefinisikan tipe data yang telah ditentukan. Hasil dari proses pembacaan tersebut dikembalikan dalam bentuk string. String tersebut harus kita olah kembali menjadi sebuah xml data type yaitu dengan menggunakan Parse method dari XDocument class. Selanjutnya anda tinggal baca dengan menggunakan Linq To XML. Pada kode dibawah tersebut saya hanya mengambil 10 Top Record dari RSS filenya. Tentunya hal tersebut dapat anda sesuaikan dengan kebutuhan.
Private Sub DownloadCompleted(ByVal sender As Object, _
ByVal e As DownloadStringCompletedEventArgs)
If e.Error IsNot Nothing Then
Return
End If
'//load rss file from its url
Dim strResult = e.Result.Remove(0, 3)
Dim doc = XDocument.Parse(strResult)
For Each item In doc...<channel>.<item>.Take(10)
listFeed.Add(New RssFeedDetails With { _
.Link = item.<link>.Value, _
.PubDate = item.<pubDate>.Value.Replace("GMT", ""), _
.Title = item.<title>.Value})
Next
listRssNews.DataSource = listFeed
listRssNews.DataBind()
End Sub
Buat sebuah prosedur untuk membaca remote RSS file dengan menggunakan WebClient class. String yang dikembalikan di proses secara asynchronous (tentunya anda dapat menggunakannya secara synchronous juga). Penanganan event handler nya di buat secara run time dengan mendelegasikan ke sebuah prosedur yang sudah dibuat sebelumnya :
Private Sub ProcessFeed()
Dim url = "http://www.native-enterprise.net/rss.xml"
Dim wc As New WebClient
AddHandler wc.DownloadStringCompleted, AddressOf DownloadCompleted
wc.DownloadStringAsync(New Uri(url))
End Sub
Langkah berikutnya yaitu proses data binding ke control GridView. Event yang digunakan yaitu ItemDataBound. Dalam event ini kita ambil control-control yang terdapat di dalam ItemTemplate. Disini kita harus melakukan explicit conversion untuk mengambil control-control tersebut karena kita tidak dapat secara langsung akses control yang terdapat di dalam ItemTemplate GridView :
Protected Sub listRssNews_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
Handles listRssNews.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
'//get the hyperlink control
Dim linkTitle = DirectCast(e.Row.FindControl("linkTitle"), HyperLink)
Dim currentRss = listFeed(e.Row.RowIndex)
linkTitle.Text = currentRss.Title
linkTitle.NavigateUrl = currentRss.Link
Dim lblDate = DirectCast(e.Row.FindControl("lblDate"), Label)
lblDate.Text = currentRss.PubDate
End If
End Sub
End Class
Karena proses pembacaan RSS filenya dilakukan secara asynchronous maka anda harus menambahkan atribut Async=true di halaman aspx yang digunakan untuk menempatkan UserControl tersebut.

Screen shot hasilnya dapat dilihat pada gambar dibawah ini :

Selamat mencoba :)