
在CodePlex上面找到这个,下载后,安装,然后在自己的东东里面引用一下.很方便的.
例子是,抓取给予的地址的rss内容,可能是多条,然后全部放一起进行排序后,取出前N条,利用GridView显示出来.
在CodePlex上面找到这个,下载后,安装,然后在自己的东东里面引用一下.很方便的.
例子是,抓取给予的地址的rss内容,可能是多条,然后全部放一起进行排序后,取出前N条,利用GridView显示出来.
1.Default.aspx页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Web2._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:HyperLinkField HeaderText="标题" DataTextField="title" DataNavigateUrlFields="link" />
<asp:BoundField DataField="description" HeaderText="概述" />
<asp:BoundField DataField="author" HeaderText="作者" />
<asp:BoundField DataField="date" HeaderText="日期"/>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
2.Default.aspx.cs页面:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Argotic.Common;
using Argotic.Syndication;

namespace Web2


{
public partial class _Default : System.Web.UI.Page

{
DataTable table = new DataTable();
protected void Page_Load(object sender, EventArgs e)

{
table.Columns.Add(new DataColumn("title"));
table.Columns.Add(new DataColumn("description"));
table.Columns.Add(new DataColumn("author"));
table.Columns.Add(new DataColumn("date"));
table.Columns.Add(new DataColumn("link"));

int counter = 3; //抓取的条数,此时,最终要显示的条数必须等于或小于每个地址抓取的条数,否则可能不一定是按全部时间排序后的结果.

//添加两条地址,抓取Rss记录.
List<Uri> feedUrls = new List<Uri>();
feedUrls.Add(new Uri("http://www.cnblogs.com/davidluozw/CommentsRSS.aspx"));
feedUrls.Add(new Uri("http://feed.yulu.info"));
IEnumerator em = feedUrls.GetEnumerator();
while (em.MoveNext())

{
RssFeed feed = RssFeed.Create((Uri)em.Current);
table.Merge(catchRss(feed, counter));
}

//对已经按所有地址抓取的所有记录混到一起,然后按时间排序,取前counter条.
DataRow[] rows = table.Select("","date desc");
DataTable tempTable = table.Clone();
tempTable.Rows.Clear();
foreach (DataRow row in rows)

{
tempTable.ImportRow(row);
if (--counter==0)

{
break;
}
}
table = tempTable;
//将排序后的结果作为数据源绑定给GridView,显示.
GridView1.DataSource = table;
GridView1.DataBind();
}


public DataTable catchRss(RssFeed feed,int counter)
{
//收取Rss.
//SyndicationResourceLoadSettings settings = new SyndicationResourceLoadSettings();
//settings.RetrievalLimit = 10;
DataTable rtnTable = table.Clone();
rtnTable.Rows.Clear();

foreach (RssItem item in feed.Channel.Items) //遍历此feed中的每一项.

{
rtnTable.Rows.Add(item.Title,item.Description,item.Author,item.PublicationDate.ToShortDateString(),item.Link.ToString());
if (--counter==0)

{
break;
}
}

return rtnTable;
}
}
}

就这样!!