12 Kasım 2009 Perşembe

LinqToXml ve RSS

Herkese merhabalar;
Bu yazımda LinqToXml'e bir giriş yaparlen günlük hayatımızda önemli bir yer etmeye başlayan RSS verilerini alarak web sayfamızda görüntülemeye çalışacağım.

Öncelikle bir web uygulamamıza bir user control ekleyelim ve bu user control'de RSS'lerin property bazda tutalım ve daha sonra ana sayfamızda bu RSS'leri görüntüleyelim.

Uygulamamıza eklediğimiz web user control'e ilgili adresteki RSS'imizi parse edicek Linq kodumuzu yazalım.

13 public string adres { get; set; }

//Öncelikle RSS'imizi alacağımız adresi tanımlayalım

14 rotected void Page_Load(object sender, EventArgs e)

15{

1if (!String.IsNullOrEmpty(adres))

//En basitinden adresin valid ya da null olup olmadığını kontrol edelim.Çok çeşitli hatalar alabiliriz ama şimdilik bu kontrol bize yeterli olacaktır.


17 {

18 try

19 {

20 XElement xelement = XElement.Load(adres);

//XElement XML elementini temsil eder.Linq ile sorgulayacağımız RSS'teki XML nesnelerini bu elemente alacağız.


21

22 var items = from i in xelement.Element("channel").Elements("item")

//Burada XML nesnemizin içine giriyoruz.

Benim bu uygulamamda kullandığım RSS http://umutluoglu.com/syndication.axd adresindeki XML nesneleri olacak.Bu adrese girip sayfaya sağ tıkladığınızda XML dosyasında XML yapısını görebilirsiniz.


23 select new

24 {

25 Title = i.Element("title").Value,

26 PubDate = Convert.ToDateTime(i.Element("pubDate").Value),

27 Description = i.Element("description").Value,

28 Link = i.Element("link").Value

29

30 };
//XML nesnesinin özelliklerine görüdüğünüz gibi i.Element("propertiadi") olarak erişebiliyorum.

Sorgumdan geri dönen XML nesnelerimi bir foreach döngüsüne sokarak istediğim işlemi yapabilirim.Ben geri dönen nesnelerimi bir hyperlink olarak göstericem böylece ilgili adresteki RSS lere link referansı vermiş olacağım.


31 foreach (var item in items)

32 {

33 HyperLink hlink = new HyperLink();

34 hlink.Text = item.Title;

35 hlink.NavigateUrl = item.Link;

36 hlink.ToolTip = item.Description;

37 Controls.Add(hlink);

38 Controls.Add(new LiteralControl("<br/>"));

39

40 }

41 }

42 catch (Exception ex)

43 {

44 Label label = new Label();

45 label.Text = ex.Message;

46 Controls.Add(label);

47 }

48 }

49 }


//User controlünü hazırlamayı bitirdik.Şimdi uygulama sayfamıza dönelim.Uygulamamıza hazırladığımız bu user controlü sürükleyip bırakalım.

//Daha sonra uygulamamıza göre isterseniz direk html içinden isterseniz code behinddan
14 WebUserControl11.adres = http://www.umutluoglu.com/syndication.axd;
//olarak atamamızı yapıp programımızı çalıştıralım.



RSS'ler geldi.:)
Herkese kolay gelsin.