نویسار

یادداشت های یک برنامه نویس وب

نویسار

یادداشت های یک برنامه نویس وب

نویسار

اینجا صرفا محلی برای یاداشتها و بیان تجربه های شخصی صاحب وبلاگ می باشد.

پیوندهای روزانه

خواندن فید های RSS در ASP.NET MVC

سه شنبه, ۲۲ مرداد ۱۳۹۲، ۱۱:۴۱ ق.ظ

در این پست قصد دارم نحوه خواندن RSS ها یا به اصطلاح فارسی "خوراک" سایت ها رو آموزش بدم.

من اینکار رو در MVC انجام می دم اما با کمی تغییر می شه اونها رو در WebForm هم مورد استفاده قرار داد.

ابتدا یک کلاس جدید با نام مثلا BlogModel به قسمت Model خودتون اضافه کنید و بعد یک خصوصیت از نوع SyndicationFeed و با نام BlogFeed برای اون می سازیم.

    public class BlogModel
    {
        public SyndicationFeed BlogFeed { get; set; }
    }

این کلاس در System.ServiceModel.Syndication قرار دارد و به ما امکان کار کردن با RSS و یا Atom رو در قالب یک سری خصوصیت ها می دهد.

در زیر برخی از خصوصیات آورده شده است که اینها در کلاس SyndicationItem موجود هستند:

  • Id
  • Authors
  • Categories
  • Contributors
  • Copyright
  • Description
  • Generator
  • ImageUrl
  • Language
  • LastUpdatedTime
  • Links
  • Title

فقط در استفاده از این خصوصیت های متوجه این نکته باشید که ممکن است هر کدام از این خصوصیت ها null باشند.

یک کنترل جدید با نام Home بسازید و ارجاع های System.ServiceModel.Syndication و همچنین System.Xml رو به اون اضافه کنید. 

        public ActionResult Index()
        {
            var model = new BlogModel();
            const string strFeed = "http://webdeveloper.blog.ir/rss";
            try
            {
                using (XmlReader reader = XmlReader.Create(strFeed))
                {
                    SyndicationFeed rssData = SyndicationFeed.Load(reader);
                    model.BlogFeed = rssData;
                }
            }
            catch (System.Net.WebException)
            {
                return Content("Error in Reading RSS Feed");
            }
            return View(model);
        }

حالا باید کدهای نمایش فید ها رو در قسمت View بنویسیم. که در اینجا من با یک حلقه اونها رو خوانده و 5 لینک جدیدتر رو نمایش میدم.

    <div>
        @if (@Model.BlogFeed != null)
        {
            <ul>
                @foreach (SyndicationItem post in Model.BlogFeed.Items.ToList().Take(5))
                {
                    <li>
                        <a href='@post.Links.First().Uri'>
                            @post.Title.Text
                        </a>
                    </li>
                }
            </ul>
        }
    </div>

که در View خودتون شی مدل رو باید برابر Models.BlogModel قرار بدید و یک ارجاع هم به کلاس System.ServiceModel.Syndication جهت دسترسی به Intelisense ویژوال استودیو برای مشاهده خصوصیت های شی post بدهید.

اینجا و اینجا می تونید اطلاعات بیشتری رو درباره کلاس SyndicationFeed بدست بیارید و اینجا هم یک آموزش خوب دیگر در همین رابطه موجود است.

نظرات  (۳)

۰۷ دی ۹۲ ، ۲۰:۲۵ مهدی امینی
سلام مطالب ما بسیار شبیه همه برنامه نویسی سی شارپ امیدوارم با تبادل لینک موافق باشید منتظرتان هستم
سلام . مرسی بابت مقاله و سایت عالیتون .
من یه مشکلی پیدا کردم در مورد این مقاله .
این کد شما رو من یه کمی تغییر دادم برای وب فرم . اما مثلا سایت هایی مثل عصر ایران یا تابناک متن کامل خبر رو ندارن . چند تا خصوصیت هم تست کردم اما جواب نداد . می تونید راهنمایی کنید ؟
پاسخ:
اون دو تا لینک که آخر مطلب قرار دادم رو مطالعه کنید.
آفرین احسنت مطلب خوب بود ولی آواتارت بهتر

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی