最近需要用asp.net(c#)接收一個(gè)Rss。Rss是自己論壇的數(shù)據(jù),而Rss是又在Item中加了一個(gè)子項(xiàng)。所以寫(xiě)了一個(gè)通用的讀取Rss的代碼,以后即時(shí)再增加或者刪除Items中的子項(xiàng),此代碼也是可以辨認(rèn)的。
嗯……貼代碼,記錄一下吧。
讀取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添加列標(biāo)識(shí)開(kāi)始
XmlNode xnColumn = xnl[0];
XmlNodeList columnsNode = xnColumn.ChildNodes;
foreach (XmlNode xn in columnsNode)
{
DataColumn dc = new DataColumn(xn.Name);
dt.Columns.Add(dc);
}
}//為dataTable添加列標(biāo)識(shí)結(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;
}