65.9K
CodeProject 正在变化。 阅读更多。
Home

在 ASP.NET 网页中读取 RSS 订阅源

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (5投票s)

2015年4月10日

CPOL

2分钟阅读

viewsIcon

24373

在 ASP.NET 网页上读取/显示 RSS 订阅源

引言

我最近有一个需求,需要在网页上显示 RSS 订阅源的内容。实际上,这是为了在我的网站上显示我自己的 CodeProject 博客 的内容。

在网站上显示 RSS 订阅源相对简单。从最简单的角度来说,RSS 订阅源是一种 XML 结构,其中包含可以显示在网页上的数据。许多不同类型的网站使用 RSS 订阅源来推送信息。对这些信息感兴趣的用户可以订阅这些 RSS 订阅源并读取它们。

RSS 订阅源的结构

RSS 订阅源具有以下基本结构。其中包含其他信息,但为了简洁起见,这些信息已被删除。

<rss>
  <channel>
    <item>
      <title></title>
      <link></link>
      <description></description>
      <pubDate></pubDate>
    </item>
  </channel>
</rss>

我网站上感兴趣的信息是 RSS 订阅源中的 标题链接描述发布日期 项目。

读取 RSS 订阅源

有几种不同的方法可以实现这一点,这只是一种方法。我使用 ASP.NET Web Form 实现了它,但一般原则可以应用于其他技术。

  1. 首先,我将一个 GridView 控件添加到我的网页中。一个 Repeater 控件也是完全可以接受的。
    <asp:GridView ID="gvRss" runat="server">
      <Columns>
        <asp:TemplateField>
          <ItemTemplate>
            <table width="100%" border="0" cellpadding="0" cellspacing="5">
              <tr>
                <h3 style="color:#3E7CFF"><%#Eval("Title") %></h3>
              </tr>
              <tr>
                <%#Eval("PublishDate") %>
              </tr>
              <tr>
                <td colspan="2">
                  <hr />
                  <%#Eval("Description") %>
                </td>
              </tr>
              <tr>
                <td> </td>
                <td align="right">
                  <a href='<%#Eval("Link") %>' target="_blank">Read More...</a>
                </td>
              </tr>
            </table>
          </ItemTemplate>
        </asp:TemplateField>
      </Columns>
    </asp:GridView>
  2. 在代码隐藏文件中,我添加了一个新方法来使用 RSS 订阅源中的数据填充 GridView 控件,如下所示
    protected void Page_Load(object sender, EventArgs e)
    {
        this.PopulateRssFeed();
    }
    
    private void PopulateRssFeed()
    {
        string rssFeedUrl = ConfigurationManager.AppSettings["RssFeedUrl"];
        List<feeds> feeds = new List<feeds>();
        XDocument xDoc = XDocument.Load(rssFeedUrl);
        var items = (from x in xDoc.Descendants("item")
                     select new
                         {
                             title = x.Element("title").Value,
                             link = x.Element("link").Value,
                             pubDate = x.Element("pubDate").Value,
                             description = x.Element("description").Value
                         });
        if (items != null)
        {
            feeds.AddRange(items.Select(i => new Feeds
                {
                    Title = i.title, Link = i.link, PublishDate = i.pubDate, Description = i.description
                }));
        }
        gvRss.DataSource = feeds;
        gvRss.DataBind();
    }
  3. 然后,我创建了一个简单的 POCO Feed 类,将 RSS 订阅源项目映射到 GridView 控件。
    public class Feeds
    {
        public string Title { get; set; }
        public string Link { get; set; }
        public string PublishDate { get; set; }
        public string Description { get; set; }
    }
  4. 我将我的 RSS 订阅源的 URL 存储在 web.config 中。这确保了如果需要,可以轻松更改 URL。
    <appSettings>
      <add key="RssFeedUrl" value="http://www.somedomain.com/rssfeed.rss"/>
    </appSettings>

摘要

就这样了。正如我提供的链接所示,您可以在我的网站上自行查看 RSS 订阅源。

如果您可能要显示多个 RSS 订阅源,则可以轻松创建一个用户控件并将 GridView 添加到该控件中。为了使用户控件可重用,您可以向用户控件添加一个 public 属性来设置 RSS 订阅源 URL。然后,您将用户控件添加到您的网页并根据需要设置 RSS 订阅源 URL 属性。

希望本技巧能为您提供足够的信息,以便在您自己的应用程序中开始读取 RSS 订阅源。如果您希望我对本技巧中的任何内容进行进一步阐述,请随时留下评论。

© . All rights reserved.