如何在我的ASP.NET网站中显示其他网站RSS feed?

布莱恩·布莱恩(Brian Brian)

我可以在SharePoint中轻松完成此操作,但似乎无法弄清楚如何在ASP.NET中执行此操作。我只想在我的站点中从Weather.com(http://www.weather.com/rss/national/rss_nwf_rss.xml?cm_ven=NWF&cm_cat=rss&par=NWF_rss等网站显示一些简单的RSS feed 在每个示例中,我都会看到它们一直连接到数据库,并添加了所有这些看起来很琐碎的东西。当然,必须有一种简单的方法来添加您的URL并绑定到Listview / Gridview以显示数据。你能帮助我吗?

阿夫扎卢

我将添加一个转发器来填充RSS中的项目,并且还要使用Syndication(System.ServiceModel.Syndication)。我选择中继器是因为它的布局非常灵活。如果需要,可以使用ListView或GridView。我的标记如下所示:

<asp:Repeater ID="rptRSS" runat="server" OnItemDataBound="rptRSS_ItemDataBound">
    <HeaderTemplate>
        <table class="tablerss">
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td class="rsstitle">
                <asp:Label ID="lblRSSTitle" runat="server" CssClass="rsshead"></asp:Label>
            </td>
        </tr>
        <tr>
            <td>
                <asp:HyperLink ID="lnkArticle" runat="server"></asp:HyperLink>
            </td>
        </tr>
        <tr>
            <td class="rssdescription">
                <asp:Label ID="lblDescription" runat="server"></asp:Label>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
                    <br />
    </FooterTemplate>
</asp:Repeater>

在我的代码中,我有:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        LoadRSS();
    }
}
protected void rptRSS_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        HyperLink lnkArticle = (HyperLink)e.Item.FindControl("lnkArticle");
        Label lblDescription = (Label)e.Item.FindControl("lblDescription");
        Label lblRSSTitle = (Label)e.Item.FindControl("lblRSSTitle");
        SyndicationItem item = (SyndicationItem)e.Item.DataItem;

        lnkArticle.Text = item.Title.Text;
        lnkArticle.NavigateUrl = item.Links[0].Uri.ToString(); ;
        lblRSSTitle.Text = item.Title.Text;
        lblDescription.Text = item.Summary.Text;
    }
}

private void LoadRSS()
{                
    List<SyndicationItem> lstSynItem = new List<SyndicationItem>();
    string uri = "http://www.weather.com/rss/national/rss_nwf_rss.xml?cm_ven=NWF&cm_cat=rss&par=NWF_rss";
    SyndicationFeed myRss = SyndicationFeed.Load(XmlReader.Create(uri));

    foreach (SyndicationItem item in myRss.Items)
    {
        lstSynItem.Add(item);
    }
    rptRSS.DataSource = lstSynItem;
    rptRSS.DataBind();
}

Scott Michell有一些不错的文章,尽管它们没有更新,但仍然有助于开始探索RSS!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章