利用 .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
首先,需要添加对 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
相关文章推荐
- 利用 .NET 3.5 的 Syndication 相关类读取 RSS Feeds
- [摘要] 利用 .NET 3.5 的 Syndication 相关类读取 RSS Feeds
- [摘要] 利用 .NET 3.5 的 Syndication 相关类读取 RSS Feeds
- 利用 .NET 3.5 的 Syndication 相关类生成 RSS
- 利用 .NET 3.5 的 Syndication 相关类生成 RSS
- 利用JAVA读取EMF相关文件并作相关格式的转化-实用知识
- .net利用npoi读取本地文件excel文件
- 利用Mono-cecil实现.NET程序的重新签名,重新链接相关库的引用
- 利用Mono-cecil实现.NET程序的重新签名,重新链接相关库的引用
- .net学习笔记----利用System.Drawing.Image类进行图片相关操作
- 利用Ajax读取文件并转化为数组
- C#2008与.NET 3.5 高级程序设计读书笔记(16)-- 类型反射、晚期绑定和基于特性的编程
- .net 利用ICallbackEventHander做进度条,无刷新!!!
- c#读取IIS中的站点相关属性代码
- 利用arcgis的python读取要素的X,Y
- C#读取RSS源,并利用Solr索引
- HPH+Mysql注入点利用 读取文件内容和导出一句话木马
- .NET 使用OpenSSL生成的pem文件做为RSA Key时的读取问题
- 利用PHP读取C语言Struct文件
- .NET datatable类的相关操作