وضعیت سایت

اعضا : 467
محتوا : 223
پیوندها : 8
بازدیدهای محتوا : 403754

بازدیدکنندگان

 69 مهمان حاضر

نحوه ایجاد Rss با استفاده از ASP.Net PDF چاپ نامه الکترونیک
نوشته شده توسط فرزاد   

 

در حال حاضر Rss یا همان خوراک سایت، لازمه یک سایت معتبر به نظر میرسد، اما نحوه ساخت آن چگونه است ؟

 

بررسی ساختار RSS ۲

 

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

با داشتن چنین ایده ای در ذهن، بیایید تا نگاهی به فرمت RSS داشته باشیم :

عنصر شاخه یک سند، <rss> میباشد که فقط یک فرزند با عنوان <channel> دارد.

عنصر <channel> شامل اطلاعاتی از مطالب هماهنگ شده (Synchronized) سایت میباشد، سه عنصر الزامی برای channel وجود دارد :

 

<title> : یک عنوان برای channel فراهم میکند.

<link> : یک Url به channel

<description> : یک توضیح مختصر درباره channel.

 

عناصر اختیاری دیگری نیز موجود هستند، مانند <language>, <copyright>, <Webmaster> و . . . که برای مشاهده لیست کامل میتوانید به این لینک مراجعه کنید.

 

بعد از عناصری که به توضیح مشخصات channel میپردازند، یک سری عنصر به نام <item> وجود دارند که هر کدام برای یکی از مطالب استفاده میشوند. هر عنصر item شامل عناصری است که دارای اطلاعاتی در مورد آن مطلب هستند.

بطور معمول هر item شامل چهار عنصر زیر است :

 

<title> : عنوانی برای مطلب فراهم میکند.

<link> : آدرس Url که به مطلب اشاره میکند.

<description> : خلاصه مطلب

<pubDate> : تاریخ انتشار مطلب

 

یادتان باشد که در اینجا فقط یکی از دو عنصر <title> یا <description> الزامی هستند. عناصر اختیاری دیگری نیز موجود هستند مانند : <author>, <category>, <comments>

برای دیدن یک نمونه این لینک را بررسی کنید.

 

همگام سازی مطالب با استفاده از ASP.Net

 

برای هماهنگ سازی مطالب با استفاده از RSS، بهتر است یک صفحه ASP.Net به نام RssFeed.aspx بسازیم که به سادگی محتویات را به صورت XML نشان میدهد. این صفحه کار خاصی انجام نمیدهد و فقط محتویات را به صورت XML به خروجی میفرستد.

 

روشهای زیادی برای تولید خروجی XML وجود دارد. بهترین روش برای این کار، استفاده از کلاسهای XML متعلق به Net Framework. است. در این مثال، برای اینکه فقط میخواهیم یک خروجی XML بسازیم از کلاس XMLtextWriter استفاده میکنیم. اگر تا به حال با کلاسهای XML کار نکرده اید، ممکن است استفاده از یک کنترل Repeater، برای نمایش اطلاعات بصورت XML برایتان ساده تر باشد.در این مطلب ما از کلاس XmlTextWriter استفاده میکنیم.

برای اطلاع از نحوه استفاده از Repeater به این لینک مراجعه کنید.

یک XMLTextWriter با نوشتن مطالب بر روی یک شی ( Stream ) کار میکند.

 

یک راه، نوشتن مستقیم XML بر روی شی OutputStream از Response است. در عین حال که مسلما این روش حواب خواهد داد و ممکن است با استفاده از Output caching به صرفه باشد، روش بهتر این است که خروجی XML را بر روی یک String بنویسیم، بنابراین اطلاعات توسط شی ASP.net Cashing در حافظه ذخیره میشوند (cashing). بهتر بودن این روش بعلت استفاده از Cash میباشد. برای دانستن اطلاعات بیشتر در مورد Cashing میتوانید از این لینکاستفاده کنید.

 

کد زیر نحوه استفاده از شی XmlTextWriter را برای هماهنگ کردن اطلاعات توسط rss نشان میدهد.

توجه داشته باشید که در کد زیر یک DataTable به نام articleData وجود دارد که شامل مطالبی است که باید هماهنگ شوند و پارامتر Contenttype از شی Asp.Net Page برابر text/xml و پارامتر ContentEncoding برابر UTF۸ میباشد.

 

 

 

Set the content-type //

;"Response.ContentType = "text/xml

;Response.ContentEncoding = Encoding.UTF۸

 

check to see if a cached version exists //

( if ( Cache["RssFeed"] == null

}

 

build up the cache dynamically //

;()DataTable articleData = CreateDataSource

 

. . . Use an XmlTextWriter to write the XML data to a string //

;()StringWriter sw = new StringWriter

;(XmlTextWriter writer = new XmlTextWriter(sw

 

write out //

;("writer.WriteStartElement("rss

;("writer.WriteAttributeString("version", "۲.۰

 

write out //

;("writer.WriteStartElement("channel

 

write out -level elements //

;("writer.WriteElementString("title", "Example RSS Feed Title

;("/writer.WriteElementString("link", "http://myWebSite.com

;(".writer.WriteElementString("description","This is a demonstration RSS feed

;("writer.WriteElementString("ttl", "۶۰

 

write out an  element for each of the first X articles //

;const int RSS_ITEMS = ۱۰

(++for (int i = ۰; i < RSS_ITEMS; i

}

write out //

;("writer.WriteStartElement("item

 

write out -level information //

;(()writer.WriteElementString("title", articleData.Rows[i]["title"].ToString

;((["writer.WriteElementString("link", String.Format("http://myWebSite.com/article.aspx?id={۰}", articleData.Rows[i]["articleID

;(()writer.WriteElementString("description",articleData.Rows[i]["synopsis"].ToString

;(()writer.WriteElementString("author",articleData.Rows[i]["author"].ToString

 

use DateTimeFormatInfo "r" to use RFC ۱۱۲۳ //

(date formatting (same as RFC ۸۲۲ //

;(("writer.WriteElementString("pubDate",((DateTime) articleData.Rows[i]["dateAdded"]).ToString("r

 

write out //

;()writer.WriteEndElement

{

 

write out //

;()writer.WriteEndElement

 

write out //

;()writer.WriteEndElement

 

(save the string in the cache (cache for ۱.۵ hours //

;(Cache.Insert("RssFeed", sw.ToString(), null,DateTime.Now.AddHours(۱.۵), TimeSpan.Zero

;()writer.Close

{

 

write out the cached value //

;(()Response.Write(Cache["RssFeed"].ToString

 

 

 

برای استفاده از کد بالا، آن را در قسمت Page_Load قرار دهید.

همچنین فضای نامهای زیر نیز بایستی در برنامه وجود داشته باشد :

 

System.Data

System.IO

System.Xml

System.Text

 

برای دیدن منبع بر روی این لینک کلیک کنید.

 

نظر ها
افزودن جدید جستجو
نادیا  - تشکر     |31.59.10.xxx |2012-01-18 05:24:50
سلام. ممنون از آموزش خوبتون.
بسیار روان ، ساده و مفید توضیح دادید.
موفق باشید.
نوشتن نظر
نام:
ایمیل:
 
آدرس سایت:
عنوان:
قالب نوشته:
[b] [i] [u] [url] [quote] [code] [img] 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
کد آنتی اسپم نمایش داده شده در عکس را وارد کنید.
Powered by !Comment 3.26

3.26 Copyright (C) 2009 VCSharp.ir / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."