.net讀取Rss轉(zhuǎn)換為DataTable

字號:


    使用.NET讀取Rss數(shù)據(jù),并轉(zhuǎn)換為DataTable返回。方法很簡單,看一下面的代碼吧。
    最近需要用asp.net(c#)接收一個Rss。Rss是自己論壇的數(shù)據(jù),而Rss是又在Item中加了一個子項。所以寫了一個通用的讀取Rss的代碼,以后即時再增加或者刪除Items中的子項,此代碼也是可以辨認的。
    嗯……貼代碼,記錄一下吧。
    代碼如下:
    讀取Rss返回DataTable
    /// <summary>
            /// 獲Rss并轉(zhuǎn)換為DataTable返回
            /// </summary>
            /// <param name="filePath">Rss地址</param>
            /// <returns></returns>
             public static DataTable GetRss(string filePath)
            {
                DataTable dt = new DataTable();
                WebClient wc = new WebClient();
                Stream srContent = wc.OpenRead(filePath);
                StreamReader sr = new StreamReader(srContent);
                if (!sr.EndOfStream)
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(sr);
                    XmlNodeList xnl = xmlDoc.SelectNodes("rss/channel/item");
                    if (xnl.Count > 0)
                    {
                        {//為dataTable添加列標識開始
                            XmlNode xnColumn = xnl[0];
                            XmlNodeList columnsNode = xnColumn.ChildNodes;
                            foreach (XmlNode xn in columnsNode)
                            {
                                DataColumn dc = new DataColumn(xn.Name);
                                dt.Columns.Add(dc);
                            }
                        }//為dataTable添加列標識結(jié)束
                        {//為DataTable添加行數(shù)據(jù)
                            foreach (XmlNode xnDate in xnl)
                            {
                                DataRow dr = dt.NewRow();
                                for (int i = 0; i < dt.Columns.Count; i++)
                                {
                                    XmlNode itemValue = xnDate.SelectSingleNode(dt.Columns[i].ColumnName);
                                    dr[i] = itemValue.InnerText;
                                }
                                dt.Rows.Add(dr);
                            }
                        }//為DataTable添加列數(shù)據(jù)
                    }
                }
                return dt;
            }