ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

ارائه اطلاع رسانی در پایگاه RSS

mohsen_mahyar@yahoo.com

ارائه  اطلاع رسانی در پایگاه  RSS

اخبار پایگاه خود را در اختیارسایرین ( RSS در این قسمت شما به عنوان مدیر یک پایگاه اطلاع رسانی هستید که می خواهد بخش

قرار دهد . پیش از شروع ،لازم است که ) (News aggregator) دیگر پایگاههای اطلاع رسانی و یا خوانندگان خبر از طریق برنامه گردآور خبر

را که می خواهید تغییرات آن را نمایش (Data base) 2,0 را مطالعه نماید.حال جدولی از پایگاه داده RSS و xml قوانین پایه ای مربوط به

استفاده می کنیم که شامل فیلدهای زیر است : NEWS_ دهید انتخاب نمایید برای مثال ما در اینجا از جدولی به نام

ID

TITLE

LEAD

IMAGE_PATH

DATE

جدول بالا را تولید نماید . RSS برنامه ای خواهیم نوشت تا فایل NET. در بخش بعدی با استفاده از

Feed برای ایجاد Net. • نوشتن برنامه ای با استفاده از

استفاده شود . ) RSS است که از پایگاه داده خود می سازید تا از آن برای ارائه xml یک فایل Feed )

های مورد استفاده NameSpace

نیز احتیاج Encoding خواهیم داشت و چون به کلاس System.Xml احتیاج به xml مشخص است که برای کار با داده های

استفاده کنیم . System.Text مربوط به آن NameSpace داریم باید از

توضیح : نکات تکمیلی در مورد هر کد در برابر آن ارائه شده است .

using System;

using System.Configuration;

using System.Data;

using System.Data.SqlClient;

using System.Text;

using System.Web;

using System.Xml;

لازم داریم Page_load آنچه در

xml 1. ایجاد و یا به روز رسانی فایل

2. اتصال به پایگاه داده برای خواندن اطلاعات مورد نظر

3. بستن تگها و اتمام کار بر روی فایل

xml -1 ایجاد و یا به روز رسانی فایل

XmlTextWriter xmlWriter = new XmlTextWriter(Server.MapPath("rss.xml")

,Encoding.UTF8);

ایجاد کرده و یا اطلاعات آن را به روز نماییم. با استفاده از این شی می xml این امکان را داریم که یک فایل xmlWriter تعریف شئ از نوع

فایل را نیز تعیین کرد. Encoding توان

xmlWriter.WriteStartDocument();

xml نظیر نسخه 1,0 برای تگ xml شروع فایل و افزودن مشخصات لازم برای فایل

xmlWriter.WriteStartElement("rss");

افزودن تگ شروع کننده عنصر <rss> عنوان اولین عنصر در فایل به

xmlWriter.WriteAttributeString("version","2.0");

<rss> افزودن مشخصه "نسخه" برای عنصر

xmlWriter.WriteStartElement("channel");

RSS برای معرفی پایگاه ارائه دهنده <channel> افزودن تگ شروع کننده عنصر

xmlWriter.WriteElementString("title", "MyDomain NewsWriter");

mohsen_mahyar@yahoo.com

 

ydomain.com به عنوان مثال . RSS برای نمایش عنوان پایگاه ارائه دهنده <channel> به عنوان فرزند <title> افزودن عنصر

می باشد . mydomain.com متعلق به سایت feed نمایان گر این مطلب است که این

xmlWriter.WriteElementString("link","http://mydomain.com");

RSS برای نمایش آدرس پایگاه ارائه دهنده <channel> به عنوان فرزند <link> افزودن عنصر

xmlWriter.WriteElementString("description","mycomain.com");

RSS برای نمایش توضیحات پایگاه ارائه دهنده <channel> به عنوان فرزند <description> افزودن عنصر

xmlWriter.WriteElementString("copyright","(c) 2004, Mydomain.com. All

rights reserved.");

RSS برای نمایش حقوق پدید آورندگان پایگاه ارائه دهنده <channel> به عنوان فرزند <copyright> افزودن عنصر

xmlWriter.WriteElementString("ttl","25");

برای اینکه نرم افزار گردآور خبر بداند پس از چه مدت <channel> به عنوان فرزند Time To Live یا <ttl> افزودن عنصر

زمانی باید فایل مورد نظر را برای اطلاعات جدید چک نماید . به عبارت دیگر پس از چه مدت زمانی اطلاعات موجود "قدیمی" به حساب می آیند

بر حسب دقیقه می باشد . <ttl> . و دوباره باید به روز شوند

-2 خواندن از روی پایگاه داده

SqlConnection sqlCn = new

SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);

web.config خواندن رشته حاوی اطلاعات اتصال به پایگاه داده از

string sqlNews = "SELECT TOP 15 ID, LEAD, TITLE, DATE FROM NEWS WHERE

STATUS_ID=2 ORDER BY DATE DESC";

تعریف پرس وجو برای نمایش ردیفهای مورد نظر

sqlCn.Open();

SqlCommand sqlcmdNews = new SqlCommand(sqlNews, sqlCn);

SqlDataReader drNews = sqlcmdNews.ExecuteReader();

برقراری اتصال با پایگاه داده و شروع خواندن اطلاعات

while(drNews.Read())

{

xmlWriter.WriteStartElement("item");

و مطالب آن به ازای هر خبر خوانده شده از پایگاه <item> افزودن تگ شروع کننده عنصر

xmlWriter.WriteElementString("title",drNews.GetString(drNews.GetOrdinal("

TITLE")));

به ازای هر خبر خوانده شده از پایگاه که حاوی عنوان خبر خوانده شده می <item> به عنوان فرزند عنصر <title> افزودن عنصر

باشد.

xmlWriter.WriteElementString("description",drNews.GetString(drNews.GetOrd

inal("LEAD")));

به ازای هر خبر خوانده شده از پایگاه که حاوی خلاصه خبر خوانده <item> به عنوان فرزند عنصر <description> افزودن عنصر

شده می باشد .

xmlWriter.WriteElementString("link","http://mydomain.com/news.aspx?"+drNe

ws.GetInt32(drNews.GetOrdinal("ID")).ToString());

به ازای هر خبر خوانده شده از پایگاه که حاوی آدرس خبر بوده و برای نمایش متن <item> به عنوان فرزند عنصر <link> افزودن عنصر

کامل خبر در مرور گر مورد استفاده قرار می گیرد.

xmlWriter.WriteElementString("pubDate",drNews.GetDateTime(drNews.GetOrdin

mohsen_mahyar@yahoo.com

 

al("DATE")).ToString("R"));

به ازای هر خبر خوانده شده از پایگاه حاوی تاریخ خبر خوانده شده می باشد . <item> به عنوان فرزند عنصر <pubDate> افزودن عنصر

822 نوشته شده باشد. RTC این تاریخ باید به صورت استاندارد

xmlWriter.WriteEndElement();

در پایان هر خبر </item> افزودن تگ پایانی

}

-3 در انتها : بستن تگ ها و پایان کار بروی فایل

xmlWriter.WriteEndElement();

</channel> افزودن تگ پایانی

xmlWriter.WriteEndElement();

</rss> افزودن تگ پایانی

xmlWriter.WriteEndDocument();

بستن تمامی تگ ها و یا مشخصه ها که بسته نشده اند .

xmlWriter.Close();

پایان کار با فایل

نسخه کامل برنامه

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Xml;

using System.IO;

using System.Text;

using System.Configuration;

namespace rss

{

/// <summary>

/// Summary description for createXml.

/// </summary>

public class createXml : System.Web.UI.Page

{

private void Page_Load(object sender, System.EventArgs e)

{

XmlTextWriter xmlWriter = new XmlTextWriter(Server.

MapPath("rss.xml")

,Encoding.UTF8);

xmlWriter.WriteStartDocument();

xmlWriter.WriteStartElement("rss");

xmlWriter.WriteAttributeString("version","2.0");

xmlWriter.WriteStartElement("channel");

xmlWriter.WriteElementString("title", "MyDomain News");

xmlWriter.WriteElementString("link","http://MyDomain.com");

xmlWriter.WriteElementString("description","MyDomain");

xmlWriter.WriteElementString("copyright","(c) 2004,

MyDomain.com. All rights reserved.");

xmlWriter.WriteElementString("ttl","25");

SqlConnection sqlCn = new

SqlConnection(ConfigurationSettings.AppSettings

["ConnectionString"]);

sqlCn.Open();

string sqlNews = "SELECT TOP 15 ID, LEAD,

TITLE, IMAGE_PATH,DATE FROM NEWS WHERE

STATUS_ID=2 ORDER BY DATE

DESC";

SqlCommand sqlcmdNews = new SqlCommand(sqlNews, sqlCn);

SqlDataReader drNews = sqlcmdNews.ExecuteReader();

while (drNews.Read())

{

xmlWriter.WriteStartElement("item");

xmlWriter.WriteElementString("title",drNews.GetString

(drNews.GetOrdinal("TITLE")));

xmlWriter.WriteElementString("description",drNews.GetString

(drNews.GetOrdinal("LEAD")));

xmlWriter.WriteElementString("link",

"http://mydomain.com/news.aspx?"

+drNews.GetInt32(drNews.GetOrdinal("ID")).

ToString()+".html");

xmlWriter.WriteElementString("pubDate",

drNews.GetDateTime(drNews.GetOrdinal("DATE"))

.ToString("R"));

xmlWriter.WriteEndElement();

}

drNews.Close();

sqlCn.Close();

xmlWriter.WriteEndElement();

xmlWriter.WriteEndElement();

xmlWriter.WriteEndDocument();

xmlWriter.Close();

}

} mohsen_mahyar@yahoo.com

 

 

پایگاه اطلاع رسانی قرار دارد ، در اختیار (Root) ایجاد شده که در ریشه xml پس از اجرای این برنامه کوتاه می توانید فایل

دیگران قرار دهید .

تولید شده از پایگاه اطلاعاتی Feed تعیین درستی

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

RSS شما را انجام می دهند . به عنوان مثال از پایگاه xml همین دلیل نرم افزار ها و پایگاههایی وجود دارند که عملیات تعیین درستی فایل

پایگاه خود را وارد کرده و نتیجه نهایی را xml می توانید استفاده کنید. برای استفاده از خدمات این پایگاه ، کافی است که آدرس فایل Validator

می باشد . Feed Validator دریافت کنید. از دیگر پایگاههای ارائه دهنده این سرویس

mohsen_mahyar@yahoo.com

 

   + MOHSEN GHASEMI - ٢:٥۸ ‎ب.ظ ; ۱۳۸٩/۳/۳۱