ASP.Net ile RSS Oluşturma

Yazar: Gökhan BAĞCI
Kategori: ASP.NET
Eklenme Tarihi: 18.8.2007 00:45:46



Bu makalemde sizlere RSS ‘den söz edeceğim. RSS, Genellikle haber sağlayıcıları, bloglar ve podcastler tarafından kullanılan, yeni eklenen içeriğin kolaylıkla takip edilmesini sağlayan özel bir XML dosya formatıdır. Kullandığı dosya biçimleri .rss , .xml ve .aspx'dir. En güncel sürümü 2.0 R

Bu makalemde sizlere RSS ‘den söz edeceğim. RSS, Genellikle haber sağlayıcıları, bloglar ve podcastler tarafından kullanılan, yeni eklenen içeriğin kolaylıkla takip edilmesini sağlayan özel bir XML dosya formatıdır. Kullandığı dosya biçimleri .rss , .xml ve .aspx'dir. En güncel sürümü 2.0 ‘dır. RSS ‘in açılımı ise Really Simple Syndication ‘dır.

Gelelim bu dosyayı nasıl oluşturacağımıza! Dosya’yı oluşturmak için projemize bir rss.aspx sayfası ekleyelim ve aşağıdaki gibi içeriği değiştirelim.

<%@Page Language="C#" CodeFile="rss.aspx.cs" Inherits="rss" EnableViewState="false" %>
<%@OutputCache Duration="300" VaryByParam="none" %>

Daha sonra sayfanın Page_Load olayında kodlarımızı yazmaya başlayalım.

//Sayfanın içeriğini temizliyoruz...
Response.Clear();
//Sayfanın xml formatında olduğunu belirliyoruz...
Response.ContentType = "text/xml";
//XML formatını oluşturmak için bir XmlTextWriter tanımlıyoruz ve
//Encoding'ini UTF8 olarak ayarlıyoruz...
XmlTextWriterXTW = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
XTW.WriteStartDocument();
//Bu kısımda sırayla elementlerimizi oluşturuyoruz...
//rss, channel, link, descripton gibi tanımlar
//bir standart tüm rss dosyalarında bu şekilde tanımlanırlar...
XTW.WriteStartElement("rss");
XTW.WriteAttributeString("version","2.0");
XTW.WriteStartElement("channel");
//title = RSS Başlığını beliriyoruz
XTW.WriteElementString("title", "gokhanbagci.info Haberler");
//link = Sayfamızın yada rss adresimizin url'sini tanımlıyoruz...
XTW.WriteElementString("link",http://www.gokhanbagci.info/rss.aspx);
//description = RSS Açıklamasını belirliyoruz...
XTW.WriteElementString("description","gokhanbagci.info | Kişisel Web Sayfası – Haber Bilgileri");
//copyright = Sahiplik bilgilerini belirliyoruz...
XTW.WriteElementString("copyright","(c) 2007, Gökhan BAĞCI");
//pubDate = Oluşturulma yada Güncellenme tarihini belirliyoruz...
XTW.WriteElementString("pubDate", "08/18/2007");
//language = Dil bilgisini tanımlıyoruz...
XTW.WriteElementString("language", "tr-TR");
//webmaster = RSS oluşturucu bilgisini belirliyoruz...
XTW.WriteElementString("webMaster", "gokhan.bagciqgmail.com");
//Bu kısımda ben access veritabanı kullanmıştım ama aynı şekilde SQL Server, MySQL, Oracle vs..
//diğer veritabanlarınıda kullanabilirsiniz...
OleDbConnectioncon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/haberler.mdb"));
con.Open();
//Eğer haber, makale vs.. bilgileri kategorileştirmişseniz rss.aspx'e querystring ile değer gönderip
//sadece o kategoriye ait olan verileri yayınlıyabilirsiniz...
//Ör: rss.aspx?KategoriID=1 gibi...
stringsql = "SELECT Baslik, KisaAciklama, HaberID, Tarih FROM haberler ORDER BY Tarih DESC";
OleDbCommandcom = new OleDbCommand(sql, con);
OleDbDataReaderDR = com.ExecuteReader();
//Dönen verileri bir döngüye sokup ayrı ayrı elementler oluşturacağız...
while(DR.Read())
{
      XTW.WriteStartElement("item");
      //title = Haber Başlığı, Makale Başlığı vs...
      XTW.WriteElementString("title",DR.GetString(0));
      //description = Açıklama...
      XTW.WriteElementString("description",DR.GetString(1));
      //link = Haber Sayfası'nın Web Adresi...
      XTW.WriteElementString("link","http://www.gokhanbagci.info/yazi-detay.aspx?YaziID=" + DR.GetInt32(2).ToString());
      //pubDate = Oluşturulma tarihi...
      XTW.WriteElementString("pubDate", DR.GetDateTime(3).ToString("R"));
      XTW.WriteEndElement();
}
DR.Close();
con.Close();
XTW.WriteEndElement();
XTW.WriteEndElement();
XTW.WriteEndDocument();
//Belgeyi tamamlayıp ekrana çıktısını yazıyoruz...
XTW.Flush();
XTW.Close();
Response.End();

Başka bir makelede görüşmek üzere…

Gökhan BAĞCI
Microsoft Certified Professional