[摘要] 利用 .NET 3.5 的 Syndication 相关类读取 RSS Feeds

原文: http://www.dotnetbips.com/articles/addaf09f-9b6b-45d2-aba8-da11f23aa53e.aspx

(对原文中的代码我做了一些修改。)

在 .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();
            }
        }
    }


     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值