ساخت فید RSS در ASP.Net

تو این پست می خواهم آموزش ساخت فید RSS رو توی ASP.NET بدم.

آراس‌اس (به انگلیسی: Really Simple Syndication یا RSS)‏ خانواده‌ای از قالب‌های خورد فید در وباست که برای انتشار محتویاتی که در بازه‌های زمانی خاص به‌روزرسانی می‌شوند (مانند وب‌نوشتها، عناوین اخبار، و پادکستها) استفاده می‌گردد.

ساختار آراس‌اس

ساختار یک فید آراس‌اس از زبان اکس‌ام‌ال تشکیل شده‌است. بسته به نسخهٔ آرس‌اس‌ای که استفاده می‌شود، ساختار فیدها متفاوت خواهد بود.

ساخت آراس‌اس در ASP.NET

کد صفحه rss.aspx رو در زیر می بینید.

 

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Xml" %>

<script runat="server">
  void Page_Load(object source, EventArgs e)
  {
    if (Cache["Rss"] == null)
    {

      Response.ContentType = "text/xml";
      Response.ContentEncoding = Encoding.UTF8;

      string channelTitle = "8np.ir Headlines";
      string channelLink = "http://8np.ir";
      string channelDesc = "Get latest articles and information about ASP, " +
        "ASP.NET and JSP from 8np.ir.";
      string language = "en-us";
      int ttl = 60; // Time to live, in minutes.
      string copyright = "Copyright 2012 - " + DateTime.Now.Year +
        " ۸np.ir, All Rights Reserved.";

      string connstr = ConfigurationManager.ConnectionStrings["YourConnStr"]
        .ConnectionString;
      string sql = "SELECT TOP 10 ArticleID, Title, Body, DatePublished, " +
        "Author FROM Articles ORDER BY DatePublished DESC";

      StringBuilder buffer = new StringBuilder();

      buffer.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
      buffer.Append("<rss version=\"2.0\">\r\n");
      buffer.Append("<channel>\r\n");

      buffer.Append("<title>").Append(channelTitle).Append("</title>\r\n");
      buffer.Append("<link>").Append(channelLink).Append("</link>\r\n");
      buffer.Append("<description>").Append(channelDesc);
      buffer.Append("</description>\r\n");
      buffer.Append("<language>").Append(language).Append("</language>\r\n");
      buffer.Append("<ttl>").Append(ttl).Append("</ttl>\r\n");
      buffer.Append("<copyright>").Append(copyright);
      buffer.Append("</copyright>\r\n");

      using (SqlConnection con = new SqlConnection(connstr))
      using (SqlCommand cmd = new SqlCommand(sql, con))
      {
        con.Open();

        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult);

        if (dr.HasRows)
        {
          bool firstRow = true;

          while (dr.Read())
          {
            int articleId = dr.GetInt32(0);
            string articleTitle = dr.GetString(1);
            string articleSynopsis = dr.GetString(2);
            DateTime datePublished = dr.GetDateTime(3);
            string author = dr.GetString(4);

            if (firstRow == true)
            {
              buffer.Append("<lastBuildDate>");
              buffer.Append(datePublished.ToString("r"));
              buffer.Append("</lastBuildDate>\r\n");
            }

            buffer.Append("<item>\r\n");
            buffer.Append("<title>").Append(articleTitle);
            buffer.Append("</title>\r\n");
            buffer.Append("<link><![CDATA[");
            buffer.Append(String.Format("http://8np.ir/" +
              "articles/display.html?article={0}&page=1", articleId));
            buffer.Append("]]></link>\r\n");
            buffer.Append("<description><![CDATA[");
            buffer.Append(articleSynopsis);
            buffer.Append("]]></description>\r\n");
            buffer.Append("<author>").Append(author).Append("</author>\r\n");
            buffer.Append("<pubDate>");
            buffer.Append(datePublished.ToString("r"));
            buffer.Append("</pubDate>\r\n");
            buffer.Append("</item>\r\n");

            firstRow = false;
          }
        }
      }

      buffer.Append("</channel>\r\n");
      buffer.Append("</rss>\r\n");

      Cache.Insert("Rss", buffer.ToString(), null,
        DateTime.Now.AddHours(1), TimeSpan.Zero);
    }

    Response.Write(Cache["Rss"].ToString());
  }
</script>
ساختار آراس‌اس ۲.۰ XML

ساختار یک فید آراس‌اس ۲ به شکل زیر است.

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<rss version=\"2.0\">
<channel>
	<title></title>
	<link></link>
	<description></description>
	<language></language>
	<ttl></ttl>
	<copyright></copyright>
	<lastBuildDate></lastBuildDate>
	<item>
		<title></title>
		<link></link>
		<description></description>
		<author></author>
		<pubDate></pubDate>
	</item>
	...
</channel>
</rss>
نحوه ی استفاده از آراس‌اس ۲.۰ XML

کد زیر را در صفحه ای که می خواهید ار اس اس باشد بین تگ های هد (<head>…</head>) قرار دهید.

<link rel="alternate" title="8np.ir Headlines"
  href="http://8np.ir/articles/rss.aspx"
  type="application/rss+xml">

 

+1
-1


هرگونه انتشار مطالب اختصاصي و محصولات اين سايت بجز با درج لينک مستقيم شرعا حرام بوده و پيگرد قانوني دارد.
طبق ماده 12 فصل سوم قانون جرائم رايانه هرگونه کپي برداري ممنوع بوده و پيگرد قانوني دارد. براي اطلاعات بيشتر کليک کنيد.

درباره‌ی مدیر سایت

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

یک دیدگاه

  1. سلام.سایت خوبی دارین.موفق باشین.مطالب جالب بودن

دیدگاه خود را بنویسید

آدرس پست الکترونیک شما منتشر نخواهد شد.خانه های ضروری نشانه گذاری شده اند. *

*


شش × 9 =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>