برای شروع فرض کنیم که شما یک وبلاگ ساختید و قصد دارید مطالبی که در وبلاگتون مینویسید داخل یک rss ثبت بشه.
توضیح بدم که rss یک فایل xml هست که از فرمت استاندارد شده ای تبعیت می کنه و اگر شما هم این استاندارد رو رعایت کنید دیگران می تونن از این فایل شما استفاده کنن.
Rss بیشتر در سایت های خبری و وبلاگ ها کار برد داره .
ابتدا فرمت استاندارد rss رو معرفی می کنم :
* <title> : عنوان مطلب منتشر شده ( خبر ، مقاله ) را در خود ذخيره می نمايد.
* <link> : آدرس مربوط به صفحه وب حاوی تمامی اطلاعات مرتبط با عنوان منتشر شده را مشخص می نمايد .
* <description> : اطلاعاتی خلاصه در رابطه با عنوان مطلب منتشر شده ( خبر ، مقاله ) را در خود ذخيره می نمايد .
در نهایت فایل xml چیزی شبیه به نوشته های زیر خواهد بود :
<rss version="2.0">
<channel>
<title>HOW2LEARNASP.NET</title>
<link>http://www.how2learnasp.net/</link>
<description>Asp.Net Learning ,آموزش asp.net ,علی دلشاد,Ali Delshad</description>
<item>
<pubDate>۱۳۸۵/۶/۳۰</pubDate>
<title>انقیاد داده های ( Binding ) در Menu یا Treeview</title>
<link>article_print.aspx?code=06b58a20941c47e29488e8fcb935a6cc</link>
<description>در این مقاله قصد دارم انقیاد داده ها رو درکنترل منو به 3 روش مختلف توضیح بدم .</description>
</item>
<item>
<pubDate>۱۳۸۵/۵/۲۹</pubDate>
<title>کار کردن با بانک های اطلاعاتی قسمت دوم ( روش متصل)</title>
<link>article_print.aspx?code=2a2d01dae48a493b9f989e2240a7a084</link>
<description>در این بخش اعمال متداول در بانک اطلاعاتی روبصورت متصل توضیح خواهم داد.</description>
</item>
<item>
<pubDate>۱۳۸۵/۵/۲۱</pubDate>
<title>تفاوت بین اسکریپتهای ClientSide و اسکریپتهای ServerSide</title>
<link>article_print.aspx?code=3c7d0b5f397d4fb2b4581a0e3d57ba97</link>
<description>تفاوت برنامه نویسی سرور ساید و کلاینت ساید رومورد بررسی قرار خواهم داد.</description>
</item>
</channel>
</rss>
خوب حالا که با این استاندارد آشنا شدیم باید ببینیم که این فایل چطور ساخته شده و چگونه بروز میشه.
خوب فرض کنیم شما برای وبلاگتون یک دیتابیس دارید به نام myweblog که این دیتابیس شامل یک جدول به نام tbl_blog هست.
این جدول شامل 4 ستون به نام های :
Myid : کد مطلب ارسالی
blog_subject : عنوان مطلب
blog_Description: مطلب اصلی
blog_date : تاریخ ارسال مطلب هست
خوب شما کلی داستان و شعر و مقاله وارد این جدول کردید و همه در این جدول ثبت شده حالا می خواهیم تمام این مطالب رو وارد یک فایل xml کنیم برای این منظور یک صفحه وب به پروژتون اضافه کنید ، اسم اونو rss.aspx بگذارید ، وارد صفحه code-behind شده ابتدا سه فضا نام زیر رو وارد نمایید :
Imports System.Data ' برای کار کردن با دیتاست
Imports System.Data.OleDb ' برای اتصال و ارتباط با بانک اطلاعاتی
Imports System.IO ' برای نوشتن در فایل ها
سپس زیر روال زیر رو مطابق زیر تعریف نمایید :
Sub Create_my_xml()
' ساخت یک متغیر از نوع دیتا ریدر
Dim DBReader As OleDbDataReader
' ساخت یک متغیر از نوع استریم رایتر
Dim FileWriter As StreamWriter
'تعیین شی و رشته اتصال به بانک اکسس
dim con as New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\myweblog.mdb")
'تعیین شی و رشته تقاضا
Dim cmd As New OleDbCommand("SELECT * FROM tbl_blog", con)
'باز نمودن اتصال
con.Open()
'نسبت دادن خوننده سطر ها به دیتا ریدر
DBReader = cmd.ExecuteReader()
'این دستور فایل مورد نظر رو می سازه
FileWriter = File.CreateText(MapPath("RSS.xml"))
'دستورات زیر خط به خط داخل فایل تعین شده در بالا رایت می کنند
FileWriter.WriteLine("<rss version=""2.0"">")
FileWriter.WriteLine("<channel>")
FileWriter.WriteLine("<title>HOW2LEARNASP.NET</title>")
FileWriter.WriteLine("<link>http://www.how2learnasp.net</link>")
FileWriter.WriteLine("<description>Asp.Net Learning ,آموزش asp.net ,علی دلشاد,Ali Delshad </description>")
'اینجا هم چون تعداد نوشته های شما متغیر هست توسط یک حلقه وایل همه اونارو رایت می کنیم
While DBReader.Read()
FileWriter.WriteLine("<item>")
FileWriter.WriteLine("<pubDate>" & DBReader("blog_date") & "</pubDate>")
FileWriter.WriteLine("<title>" & DBReader("blog_subject") & "</title>")
FileWriter.WriteLine("<link>http://how2learnasp.net/article.aspx?code=" & DBReader("blog_id") & "</link>")
FileWriter.WriteLine("<description>" & DBReader("blog_Description") & "</description>")
FileWriter.WriteLine("</item>")
End While
FileWriter.WriteLine("</channel>")
FileWriter.WriteLine("</rss>")
FileWriter.Close()
' بستن دیتا ریدر
DBReader.Close()
'بستن اتصال
con.Close()
End Sub
خوب حالا زیر روال مربوط به رویداد لود شدن صفحه رو باز کنید و کد های زیر رو داخل اون بنویسید :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Call Create_my_xml() ' ساب روتین فوق رو فراخوانی می کنه
Response.Redirect("rss.xml") ' کاربر رو به فایل مورد نظر هدایت می کنه
End Sub
چند نکته :
1. شما میتونید از استاندارد rss استفاده نکنید و یک فایل xml برای استفاده های گوناگون مثلا استفاده در منو ها که در مقالات دیگر توضیح دادم بسازید.
2. دقت کنید که پوشه ای که دارید داخل اون فایل xml رو میسازید که در این شاخه روت هست باید مجوز و پرمیشن رایت رو داشته باشه وگرنه با خطای Access denied مواجه خواهید شد.
3. برای رایت کردن روی فایل های xml شی دیگری به نام xmlwriter هم هست که در مقالات بعدی به آن اشاره خواهم کرد.