zoukankan      html  css  js  c++  java
  • [摘要] 利用 .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();
            }
        }
    }


     

查看全文
  • 相关阅读:
    Win7电脑无法安全删除硬件并弹出媒体的解决方法
    Linux环境变量及其设置
    Linux环境变量文件environment, profile, bashrc含义
    Linux下设置和查看环境变量
    [Android Traffic] 让android应用在传输网络数据的时候更省电
    [Android Traffic] 看无线电波如何影响网络操作]
    [Android Pro] Android的5个进程等级
    [编码解码] Base64 编码换行和+号遍空格的处理
    [Android Traffic] Android网络开启、关闭整理
    [Android Traffic] android 流量计算方法
  • 原文地址:https://www.cnblogs.com/RChen/p/1165178.html
  • Copyright © 2011-2022 走看看