Lấy nguồn tin từ website khác có cung cấp RSS

RSS được sử dụng rộng rãi ban đầu bởi các website tin tức cho phép người khác thu thập tin tức của họ. Hiện giờ, rất nhiều các website khác đang sử dụng RSS. Tôi sẽ hướng dẫn bạn lấy thông tin từ các website đó qua rss. Xem Demo

Rss được cung cấp thường theo chuẩn sau: 
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title></title>
    <description></description>
    <link></link>
    <copyright></copyright>
 
  <item>
   <title></title>
   <description></description>
   <link></link>
  </item>
  <item>
   <title></title>
   <description></description>
   <link></link>
  </item>
  ....
  </channel>
</rss>
Bạn cần viết các hàm sau:
1. Hàm CreateDataTable()
 
private DataTable CreateDataTable()
{
    DataTable myDataTable = new DataTable();
    DataColumn myDataColumn;

    myDataColumn = new DataColumn();
    myDataColumn.DataType = Type.GetType("System.String");
    myDataColumn.ColumnName = "title";
    myDataTable.Columns.Add(myDataColumn);

    myDataColumn = new DataColumn();
    myDataColumn.DataType = Type.GetType("System.String");
    myDataColumn.ColumnName = "link";
    myDataTable.Columns.Add(myDataColumn);

    myDataColumn = new DataColumn();
    myDataColumn.DataType = Type.GetType("System.String");
    myDataColumn.ColumnName = "description";
    myDataTable.Columns.Add(myDataColumn);
    return myDataTable;
}
2. Hàm AddDataToTable 
private void AddDataToTable(
 string Title, 
 string link, 
 string Descriptions, 
 DataTable myTable)
{
    DataRow row;
    row = myTable.NewRow();
    row["title"] = Title;
    row["link"] = link;
    row["description"] = Descriptions;
    myTable.Rows.Add(row);
}
 3. Tiếp theo Bạn cần viết hàm BindRSSItem theo địa chỉ trang cung cấp RSS.
public DataTable BindRSSItem(string rssURL)
{
    DataTable myDataTable = CreateDataTable();
    try
    {
        WebRequest myRequest = WebRequest.Create(rssURL);
        WebResponse myResponse = myRequest.GetResponse();

        Stream rssStream = myResponse.GetResponseStream();
        XmlDocument rssDoc = new XmlDocument();
        rssDoc.Load(rssStream);
        XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");
        string title = "";
        string link = "";
        string description = "";
        for (int i = 0; i < rssItems.Count; i++)
        {
            XmlNode rssDetail;
            rssDetail = rssItems.Item(i).SelectSingleNode("title");
            if (rssDetail != null)
            {
                title = rssDetail.InnerText;
            }
            else
            {
                title = "";
            }
            rssDetail = rssItems.Item(i).SelectSingleNode("link");
            if (rssDetail != null)
            {
                link = rssDetail.InnerText;
            }
            else
            {
                link = "";
            }

            rssDetail = rssItems.Item(i).SelectSingleNode("description");
            if (rssDetail != null)
            {
                description = rssDetail.InnerText;
            }
            else
            {
                description = "";
            }
            AddDataToTable(title, link, description, myDataTable);
        }
    }
    catch { }
    return myDataTable;
}
Trong trang asp.net bạn cần tạo 1 gridview để hiển thị các link của rss
<asp:GridView ID="grvTheGioi" runat="server" 
 AutoGenerateColumns="False" 
 GridLines="None"
    ShowHeader="False" Width="100%">
    <Columns>
        <asp:HyperLinkField 
  DataNavigateUrlFields="link" 
  DataTextField="title" 
  SortExpression="title" 
  Target="_blank" />
    </Columns>
</asp:GridView>
Trong hàm Page_Load bạn sử bind dữ liệu vào như sau:
grbName.DataSource= BindRSSItem(LienKet);
grbName.DataBind();

//Ví dụ: LienKet=http://vnexpress.net/rss/gl/kinh-doanh.rss
Tùy theo mục đích mà bạn bind dữ liệu vào Grid, Ở đây mình chỉ lấy trường title để hiển và trường link  để tạo liên kết. Nếu xử lý tốt String bạn hoàn toàn có thể đọc webpage và lấy luôn được cả Content bằng cách đọc và cắt chuỗi.