最近需要用asp.net(c#)接收一個Rss。Rss是自己論壇的數據,而Rss是又在Item中加了一個子項。所以寫了一個通用的讀取Rss的代碼,以後即時再增加或者刪除Items中的子項,此代碼也是可以辨認的。
嗯……貼代碼,記錄一下吧。
復制代碼 代碼如下:
讀取Rss返回DataTable
/// <summary>
/// 獲Rss並轉換為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添加列標識結束
{//為DataTable添加行數據
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添加列數據
}
}
return dt;
}