demoshop

demo, trying to be the best_

擷取RSS至您的網站中

  • 2008-01-26
  • 13990
  • 0

有時候希望網站豐富點,但是沒那麼多人力來維護該怎麼辦呢?現在最風行的RSS訂閱就可以幫助我們提高網站的豐富度,此篇就是教各位怎麼把別人的RSS丟到自己的網站內

我們在aspx頁面中加入一個DataList

<asp:Panel ID="Panel2" runat="server" GroupingText="籃球新聞" Width="100%" Height="200px">
    <asp:DataList ID="DataList1" runat="server" Width="100%" EnableViewState="False">
        <ItemTemplate>
            <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='' Target="_blank" Text=''>
            </asp:HyperLink>
        </ItemTemplate>
        <ItemStyle HorizontalAlign="Left" />
    </asp:DataList>
    <asp:Literal ID="litError2" runat="server" EnableViewState="False">
    </asp:Literal>
</asp:Panel> 



然後在.CS頁面中的Page_Load事件中這樣寫

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.DataList2.DataSource = readRss("http://sports.news.yam.com/rss/rss_basketball.xml", litError2);
            this.DataList2.DataBind();
        }
    } 


因為上方我們調用了一個readRss方法所以當然有下方的code囉

DataTable readRss(string url, Literal error)
   {
       XmlDocument xmlDoc = new XmlDocument();
       try
       {
           xmlDoc.Load(url);
       }
       catch
       {
           error.Text = "系統繁忙,暫不提供此資訊...";
       }
       DataTable dt = new DataTable();
       dt.Columns.Add("title");
       dt.Columns.Add("link");
       for (int i = 0; i < 9; i++)//我只抓九筆新聞
       {
           XmlNode xNode = xmlDoc.SelectNodes("//item").Item(i);
           if (xNode != null)
           {
               string title = xNode.SelectSingleNode("title").InnerText;
               string link = xNode.SelectSingleNode("link").InnerText;
 
               if (title.Length > 30)//如果標題大於30個字作以下修改
               {
                   title = title.Substring(0, 30) + "....";
               }
 
               dt.Rows.Add(title, link);
           }
           else
           {
               error.Text = "目前無新聞...";
               break;
           }
       }
       return dt;
   } 

demo這樣寫的方式可以避免因為rss擷取不到,導致整各頁面死掉的問題,如果各位有更好的方法歡迎提供給demo唷

回應討論