نقل اطلاعات RSS دیگران در پایگاه اطلاع رسانی خود

ساده ترین نوع استفاده از RSS در پایگاه اطلاع رسانی ، نمایش آخرین اخبار پایگاههای دیگر می باشد . در این حالت کافی است که محلی برای نمایش اطلاعات پایگاه مورد نشر در نظر بگیرید و بسته به اینکه بخواهید فایل مورد نظر چگونه نمایش داده شود ، آن را سفارشی نمایید .
سه‌شنبه، 24 شهريور 1388
تخمین زمان مطالعه:
موارد بیشتر برای شما
نقل اطلاعات RSS دیگران در پایگاه اطلاع رسانی خود
نقل اطلاعات RSS دیگران در پایگاه اطلاع رسانی خود
نقل اطلاعات RSS دیگران در پایگاه اطلاع رسانی خود






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

مثال :

برای نمایش اخبار منتشر شده در BBC در پایگاه خود، در ساده ترین حالت ،کافی است که یک صفحه .aspx ایجاد نمایید . سپس یک Datagrid در صفحه قرار دهید :

  <asp:DataGrid id="dgPost" runat="server" AutoGenerateColumns="False" BorderColor="#DEBA84" BorderStyle="None"
CellSpacing="2" BorderWidth="1px" BackColor="#DEBA84" CellPadding="3" dir=rtl>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#738A9C"></SelectedItemStyle>
<ItemStyle ForeColor="#8C4510" BackColor="#FFF7E7"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#A55129"></HeaderStyle>
<FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="title">
<ItemTemplate>
<a href=<%# DataBinder.Eval(Container, "DataItem.link") %>><%# DataBinder.Eval(Container, "DataItem.title") %>
</a>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="description" HeaderText="Description"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="#8C4510" Mode="NumericPages"></PagerStyle>
</asp:DataGrid>

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
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;
namespace rss
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgPost;

private void Page_Load(object sender, System.EventArgs e)
{
dgPost.DataSource=GetRss("http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/world/rss091.xml");
dgPost.DataBind();
}
public DataTable GetRss(string str)
{
XmlTextReader xmlr = new XmlTextReader(str);
DataSet ds = new DataSet();
ds.ReadXml(xmlr);
return ds.Tables[2];
} 

همانطور که مشخص استDatagrid تعریف شده ، برای نمایش عنوان و توضیح خبر مورد استفاده قرار می گیرد . این ساده ترین حالت ممکن برای استفاده از xml پایگاههای دیگر می باشد.
در این حالت می توان به شی "XmlTextReader"، نشانی فایل مورد نظر را ارسال کرد . سپس فایل را از طریق متد ReadXml در DataSet قرار داد. نکته مهم این است که در هنگام خواندن xml ، DataSet به ازای هر سطح از xml یک DataTable ایجاد می کند . بنابراین عناصر <rss> و <channel> هرکدام به عنوان یک جدول در DataSet شناخته خواهند شد . می توان نتیجه گرفت که برای نمایش اطلاعات <channel> (شامل زبان ، ttl ، copyright و ...) کافی است که اطلاعات جدول شماره 1 یا [ ds.Tables[1 را استخراج نمایید .
با استفاده از روش بالا می توان اطلاعات را به درستی نمایش داد .اما استفاده از UserControl این امکان را می دهد که بتوانیم بدون تغییر محسوس در صفحات، کدی ایجاد نماییم که هم قابلیت استفاده مجدد ( بدون تکرار کردن کد ) را داشته باشد و هم تغییر و کنترل آن ساده و از یک فایل، برای تمامی صفحات باشد .برای اینکار ابتدا با استفاده از Visual Studio فایلی با عنوان rssFeed.ascx می سازیم و مجددا روند ذکر شده در روش قبل را تکرار می کنیم .

<%@ Control Language="c#" AutoEventWireup="false" Codebehind="RssFeed.ascx.cs" Inherits="rss.RssFeed" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<asp:DataGrid id="dgPost" runat="server" AutoGenerateColumns="False" BorderColor="#DEBA84" BorderStyle="None"
CellSpacing="2" BorderWidth="1px" BackColor="#DEBA84" CellPadding="3" dir=rtl>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#738A9C"></SelectedItemStyle>
<ItemStyle ForeColor="#8C4510" BackColor="#FFF7E7"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#A55129"></HeaderStyle>
<FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="title">
<ItemTemplate>
<a href=<%# DataBinder.Eval(Container, "DataItem.link") %>><%# DataBinder.Eval(Container, "DataItem.title") %>
</a>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="description" HeaderText="Description"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="#8C4510" Mode="NumericPages"></PagerStyle>
</asp:DataGrid>

 namespace rss
{using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
/// <summary>
/// Summary description for RssFeed.
/// </summary>
public class RssFeed : System.Web.UI.UserControl
{private void Page_Load(object sender, System.EventArgs e)
{dgPost.DataSource=GetRss("http:/mydomain.com/rss.xml");
dgPost.DataBind();
}public DataTable GetRss(string str)
{
XmlTextReader xmlr = new XmlTextReader(str);
DataSet ds = new DataSet();
ds.ReadXml(xmlr);
return ds.Tables[2];
}

چگونگی استفاده از UserControl

نکته مهم در مورد UserControl نحوه استفاده از این فایل می باشد. برای استفاده از UserControl در صفحات دیگر، احتیاج به معرفی Usercontrol ایجاد شده داریم که از طریق کد زیر قابل انجام می باشد .
<%@ Register TagPrefix="rss" TagName="rssFeed" Src="ssFeed.ascx" %>
با استفاده از این کد می توان کنترل جدید را در هر صفحه .aspx که می خواهید از آن استفاده کنید، معرفی نمایید . به عنوان مثال :

<%@ Register TagPrefix="rss" TagName="rssFeed" Src="rssFeed.ascx" %>
<%@ Page language="c#" Codebehind="View.aspx.cs" AutoEventWireup="false" Inherits="rss.WebForm1" %>
<HTML>
<HEAD>
</HEAD>
<body MS_POSITIONING="GridLayout">
<TABLE height="163" cellSpacing="0" cellPadding="0" width="57" border="0" ms_2d_layout="TRUE">
<TR vAlign="top">
<TD width="57" height="163">
<form id="frm" method="post" runat="server">
<TABLE height="40" cellSpacing="0" cellPadding="0" width="151" border="0" ms_2d_layout="TRUE">
<TR vAlign="top">
<TD width="10" height="15"></TD>
<TD width="141"></TD>
</TR>
<TR vAlign="top">
<TD height="25"></TD>
<TD>
<rss:rssFeed id="ucRssFeed" runat="Server" /></TD>
</TR>
</TABLE>
</form>
</TD>
</TR>
</TABLE>
</body>
</HTML>

استفاده از caching

مطمئنا در هنگام نمایش اطلاعات سایرین در پایگاه خود ، بهتر است که به ازای هر بار، بارگذاری صفحه ، به پایگاه ارائه دهنده RSS مراجعه نکنیم . بلکه در یک مدت زمان مشخص تغییر اطلاعات را چک نماییم . یکی از ساده ترین روشها Cache کردن اطلاعات RSS برای یک مدت زمان دلخواه می باشد تا هر زمان که این بازه زمانی به پایان می رسد بتوانیم اطلاعات Feed را از پایگاه ارائه دهنده مجددا بخوانیم .برای این کار می توانیم به صورت زیر عمل نماییم :

namespace rss
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
/// <summary>
/// Summary description for RssFeed.
/// </summary>
public class RssFeed : System.Web.UI.UserControl
protected System.Web.UI.WebControls.DataGrid dgPost;
private void Page_Load(object sender, System.EventArgs e)
if(Cache["RSSFeed"]==null)
{ DataTable dt=GetRss("http://mydomain.com/rss.xml");
Cache.Insert("RSSFeed",dt,null,DateTime.Now.AddMinutes(20),TimeSpan.Zero) ;
dgPost.DataSource = Cache["RSSFeed"];
dgPost.DataBind();
public DataTable GetRss(string str)
XmlTextReader xmlr = new XmlTextReader(str);
DataSet ds = new DataSet();
ds.ReadXml(xmlr);
return ds.Tables[2];

/خ


تبلیغات در راسخون
نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
موارد بیشتر برای شما
حمله سامسونگ به اپل در معرفی محصول جدیدش: ضخامت، وزن و دوام آیفون «Duo» سوژه شد + فیلم
play_arrow
حمله سامسونگ به اپل در معرفی محصول جدیدش: ضخامت، وزن و دوام آیفون «Duo» سوژه شد + فیلم
باقری کنی: از ترور رهبر شهید نخواهیم گذشت + فیلم
play_arrow
باقری کنی: از ترور رهبر شهید نخواهیم گذشت + فیلم
صحبت‌های بیرانوند پس از معرفی خود به پادگان آباده + فیلم
play_arrow
صحبت‌های بیرانوند پس از معرفی خود به پادگان آباده + فیلم
ترامپ پس از رأی نیاوردن نامزد مورد حمایتش، مدعی دستکاری در انتخابات برزیل شد + فیلم
play_arrow
ترامپ پس از رأی نیاوردن نامزد مورد حمایتش، مدعی دستکاری در انتخابات برزیل شد + فیلم
بی‌اطلاعی هگست از اعضای آسه‌آن / او کره جنوبی، ژاپن و استرالیا را از اعضا دانست + فیلم
play_arrow
بی‌اطلاعی هگست از اعضای آسه‌آن / او کره جنوبی، ژاپن و استرالیا را از اعضا دانست + فیلم
ترامپ: همه مراکز هسته‌ای ایران را زیر نظر داریم + فیلم
play_arrow
ترامپ: همه مراکز هسته‌ای ایران را زیر نظر داریم + فیلم
نتانیاهو: به موساد و ارتش اسرائیل دستور داده‌ام که حکومت ایران را سرنگون کنند
play_arrow
نتانیاهو: به موساد و ارتش اسرائیل دستور داده‌ام که حکومت ایران را سرنگون کنند
نخبگان در آینهٔ امامین انقلاب؛ امانت الهی، مسئولیت اجتماعی و تمدن‌سازی
نخبگان در آینهٔ امامین انقلاب؛ امانت الهی، مسئولیت اجتماعی و تمدن‌سازی
اهدای مدال طلای فردین هدایتی و اهتزاز پرچم ایران
play_arrow
اهدای مدال طلای فردین هدایتی و اهتزاز پرچم ایران
نشست چهارجانبه ایران، پاکستان، ترکیه و عربستان
play_arrow
نشست چهارجانبه ایران، پاکستان، ترکیه و عربستان
دور افتخار فردین هدایتی با پرچم
play_arrow
دور افتخار فردین هدایتی با پرچم
خوش و بش ­سرلشکر رضایی با مقامات ارشد ترکیه، عربستان و پاکستان
play_arrow
خوش و بش ­سرلشکر رضایی با مقامات ارشد ترکیه، عربستان و پاکستان
اسماعیلی حسرت به دل حسرت گذاشت
play_arrow
اسماعیلی حسرت به دل حسرت گذاشت
مهمدی با گرد و خاک در نیمه‌نهایی فینالیست شد
play_arrow
مهمدی با گرد و خاک در نیمه‌نهایی فینالیست شد
افت فشار حسن رنگرز در پی ناداوری‌ها و کشتی جنجالی مهمدی
play_arrow
افت فشار حسن رنگرز در پی ناداوری‌ها و کشتی جنجالی مهمدی