您的位置:首页 > Web前端

利用 .NET 3.5 的 Syndication 相关类读取 RSS Feeds

2008-05-26 09:59 211 查看
在 .NET 3.5 类库中新增了 Syndication 相关的一些类,可用来读取或提供 RSS Feeds.

首先,需要添加对 System.ServiceModel.Web 这个程序集的引用。

其中包含了 System.ServiceModel.Syndication 名称空间。

一些主要的类如下:

SyndicationFeed
SyndicationItem
SyndicationContent
SyndicationLink
SyndicationPerson
SyndicationCategory
这些分别代表 RSS Feed 中相关的 xml 元素。他们是独立于具体 RSS 格式的。

而要区分格式,则有下列一些 Formatter 类:

Rss20FeedFormatter
Rss20ItemFormatter
Atom10FeedFormatter
Atom10ItemFormatter

分别对应于 RSS 2.0 和 Atom 1.0 两种标准。

下面是一个简单的 asp.net 例子,用这些 API 读取博客园的 Feed 进行显示。

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_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 id="Head1" runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="lblTitle" runat="server" />

<asp:Repeater ID="repeater1" runat="server">

<ItemTemplate>

<dl>

<dt>

<asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("Title.Text") %>'

Font-Bold="true"

NavigateUrl='<%# Eval("Links[0].Uri.AbsoluteUri") %>' />

</dt>

<dd><%# Eval("Summary.Text") %></dd>

<dd><%# Eval("PublishDate.DateTime", "发表于:{0}") %></dd>

</dl>

</ItemTemplate>

</asp:Repeater>

<hr /><asp:Label ID="lblCopyright" runat="server" />

</div>

</form>

</body>

</html>

Default.aspx.cs

using System;

using System.ServiceModel.Syndication;

using System.Xml;

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

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

var feed = new Rss20FeedFormatter();

using (var xreader = XmlReader.Create("http://www.cnblogs.com/rss"))

{

feed.ReadFrom(xreader);

}

lblTitle.Text = feed.Feed.Title.Text;

if (feed.Feed.Copyright != null)

{

lblCopyright.Text = feed.Feed.Copyright.Text;

}

repeater1.DataSource = feed.Feed.Items;

repeater1.DataBind();

}

}

}

转载:http://www.cnblogs.com/RChen/archive/2008/04/22/1165178.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: