خواندن Rss Feed در #C

12 11 2008

سلام امروز می خوام نحوه ی نوشتن یک Rss Reader رو براتون توضیح بدم.تقریبا اکثر سایت هایی که محتویات دینامیک دارن حداقل یک سرویس Rss برای ویزیتوراشون ارائه میدن، Rss feed ها می تونن tag های خودشون و داشته باشن یا اصلا برخی از tag ها رو نداشته باشن، ساختار کلی Rss، با تگ xml  شروع می شه، پس از اون rss tag که مشخص می کنه که این سند xml یک سند Rss هستش، بعدش به ترتیب داخل تگ rss ، تگ channel هستش که تگ های داخلیش ارائه دهنده ی اطلاعاتی در مورد ارائه دهنده rss و خود اخباری که از طریق rss ارائه داده میشه . شکل زیر ساختار یک rss رو نشون میده:

rssstructureمنم بر اساس این ساختار یک برنامه ی ساده برای خواندن rss ها براتون نوشتم که حالت آموزشی داره و کاملا ساده است. که می تونین از سورس برنامه رو از لینک پایین داونلودش کنین.

متغییر های استفاده شده در کد برنامه :

// Xml Document
private XmlDocument m_XmlDocument;
// Xml Node
private XmlNode m_XmlNode;
// Xml Text Reader
private XmlTextReader m_XmlReader;

تکه کد هایی از برنامه Rss Reader:


// -----/ Create xml reader from url
m_XmlReader = new XmlTextReader(cmbFeedUrl.Text);
m_XmlDocument = new XmlDocument();
// -----/

// -----/ Load the xml from url into the xml document
m_XmlDocument.Load(m_XmlReader);
// -----/

// -----/ Detect xml tag and validate xml document to find RSS tag
// -----/ if method find the rss tag that return the rss tag's node
m_XmlNode = ValidateXmlDocument();


//------/ Get gerneral information of rss provider like title
//------/ link and description, then set form control value
//------/  with information inside the nodes
m_RssInformation = GetGeneralInformationOfRssProvider();

lblTitle.Text += m_RssInformation.Title;
lblLink.Text += m_RssInformation.Link;
lblLanguage.Text += m_RssInformation.Language;
lblDescription.Text += m_RssInformation.Description;
//-----/

//-----/ Add rss news to the list view
AddRssNewsToRssListView();
//-----/


/// Validate the rss file from entered url
/// Return current Rss tag if it's find it
private XmlNode ValidateXmlDocument()
{
      foreach (XmlNode node in m_XmlDocument.ChildNodes)
      {
         if (node.Name == "rss")
           return node;
      }
      // Return null, if it's not find the rss tag
      return null;
}


private string GetRssContentAsHTML()
{
  foreach (XmlNode node in m_XmlNode.ChildNodes)
  {
    if (node.Name == "item")
    {
      foreach (XmlNode innerNode in node.ChildNodes)
        if (innerNode.InnerText == lstRssList.SelectedItems[0].Text)
            return String.Format("{0}    {1}",
               innerNode.InnerText, node["description"].InnerText);
    }
  }
  return string.Empty;
}

سورس نرم افزار : http://www.megaupload.com/?d=GOI5XEJ7

Advertisements

کارها

Information

3 responses

10 05 2010
aghdam

سلام
مطلب مفیدی بود .اگه میشه فایل رو برام میل کنید .فک کنم مشکل داره
راستی جدیدا بنده علاقه مد شدم یک RSS reader فارسی و قدرتمند بنویسم به صورت Open source تا در نتیجه به تمام ایرانیان کمک کوچیکی تونسته باشم بکنم
ولی راستشو بخواهید اطلا عات زبادی در موردش ندارم ممنون می شم کمکم کنید.منتظرم.خداحافظ

30 05 2010
aghdam

سلام
دوست عزیز بنده هنوز منتظرم.خدا نگهدار

7 06 2010
codeprojects

دوست عزیز وقت برای اصلاح لینکها ندارم. سورس رو براتون ایمیل زدم.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s




%d وب‌نوشت‌نویس این را دوست دارند: