Merhabalar.

Konu başlığından da anlamış olacağınız üzere, sitelerinizde ve projelerinizde sıklıkla kullanabileceğiniz bir konuyu ele alacağım. Konu biraz uzun olduğundan dolayı yazılarımı, yazı dizisi şeklinde yayınlamayı planlıyorum. Öncelikle biraz size programın nasıl işlediğinden ve nelere değineceğimden bahsedeyim.

İlk olarak programımızı Microsoft Visual Studio 2010 ortamında ASP.NET projesi olarak uygulayacağız.

Gerekli Programlar

Microsoft Visual Studio 2010 veya daha üstü,

Microsoft SQL (Benim tercihim bu yönde oldu)

 

Gerekli Diller

C#, Temel HTML ve tercihen CSS

 

Çalışma Mantığı

Veritabanımızda sakladığımız RSS FEED Linlerinden XML yapısını sayfamıza alacağız. Aldığımız karışık XML dosyasının istediğimiz alanları çekeğiz yani diğer tabiriyle PARSE edeceğiz. Eğer başarılı olunduysa bu bilgileri veritabanımızda saklayacağız. Ve haberleri görüntülerken veri tabanından haberleri sistemimizde görüntüleyeceğiz. Siz dilerseniz haberleri veri tabanından çekmek zorunda değilsiniz. Benim projem gereğince öyle yapmam gerekiyordu.

 

Etap 1 (RSS Linki ekleme)

Bir textbox, bir dropdown menü ve bir button ekliyoruz. Dropdown menümüzün itemlerini veri tabanımızdan çekiyoruz. Çünkü sistemimiz kategorilere göre haberleri kaydediyor ve görüntülüyor. Kod bloğu ve ekran görüntüsü aşağıdaki gibidir.

<h3>Yayın Nasıl Eklenir</h3>
<p>Bir yayın eklemek için, istediğiniz bir yayının <b>"RSS Linki"</b> ni kopyalayıp kutucuğa yapıştırınız.
Ardından kategori seçimi yaptıktan sonra <b>ekle</b> butonuna basarak yayın ekleme işlemini tamamlayınız.
Bütün işlemlerin başarılı bir şekilde tamamlanmasının ardından daha önce eklenmiş olan yayınları <a href="showStream.aspx">buradan</a> listeleyebilirsiniz.</p>

<asp:TextBox ID="rssTextBox" runat="server" Width="313px"></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource1" DataTextField="categoryName"
DataValueField="categoryID" AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:RSSConnectionString %>"
SelectCommand="SELECT [categoryName], [categoryID] FROM [Categorys]"></asp:SqlDataSource>
<br/><br/>
<asp:Button ID="ekleButton" runat="server" Text="RSS Ekle"
onclick="ekleButton_Click" Height="26px" /><br/>
<asp:Label ID="Label1" runat="server"></asp:Label>

22-300x102

 

 

 

 

Etap 2 (XML Parse)

Burada GetRssData adında bir fonksiyonumuz var. Bu fonksiyon, içerisine gönderilen linklerdeki XML dökümanlarını istediğimiz biçimde şekillendirmemize yarayacak. Kodlarını kısım kısım parçayalarak açıklayacağım.

Alttaki resimde fonksiyona gönderdiğimiz “channel” değişkenini, web üzerinden gönderiyor ve aldığı yanıttaki değerleri yeni bir XML dosyası oluşturarak içine yazdırıyor. Ve burası önemli. rss/channel/item kısmında hangi kısımın içindeki itemlerini seçtireceğimiz yolu tanımlıyoruz.


private String[,] getRssData(String channel)
{
System.Net.WebRequest myRequest = System.Net.WebRequest.Create(channel);
System.Net.WebResponse myResponse = myRequest.GetResponse();
System.IO.Stream rssStream = myResponse.GetResponseStream();
System.Xml.XmlDocument rssDoc = new System.Xml.XmlDocument();
rssDoc.Load(rssStream);

System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");

 

Bir sonraki resimde ise daha önce seçtiğimiz yoldaki itemler içerisinde bir döngü oluşturuyoruz. Bu itemlerin içindeki istediğimiz child elementleri yazıyoruz. Benim projem gereği sadece haberin başlığını ve linkini çekmem yeterli. Siz içerik çekmek isterseniz benzer bir kod bloğu ekleyip içerisindeki değişkeni “description” yapabilirsiniz. Bunun görseli aşağıdaki gibidir.

 


for (int i = 0; i < rssItems.Count; i++)
{
System.Xml.XmlNode rssNode;
rssNode = rssItems.Item(i).SelectSingleNode("title");

if (rssNode != null)
tempRssData[i, 0] = rssNode.InnerText;

else
tempRssData[i, 0] = "";

rssNode = rssItems.Item(i).SelectSingleNode("link");
if (rssNode != null)
tempRssData[i, 1] = rssNode.InnerText;
else
tempRssData[i, 1] = "";
}

return tempRssData;
}

 

Yazılarımı çok uzun tutmak istemiyorum. Bu yüzden diğer yazılarım bunun devamı niteliğinde olacak. Temel olarak XML Parse etmenin mantığını anlatmaya çalıştım. Devamı için takipte kalınız.

 

Facebook'dan yorumla