欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net读取Rss转换为DataTable

程序员文章站 2024-02-29 16:14:22
最近需要用asp.net(c#)接收一个rss。rss是自己论坛的数据,而rss是又在item中加了一个子项。所以写了一个通用的读取rss的代码,以后即时再增加或者删除it...

最近需要用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;
        }