名医榜 名院榜 所有类别
遇到健康问题怎么办?赶快来提问!万名专家为您24小时内解答!
用户榜 提问榜 积分换礼品
用户分享
写的一个RSS阅读器的类.可以将RSS数据转换为DataTable
发布者:fireboy - 发布时间:2007-7-18 15:44:47- 访问次数:15
2
不支持
2
顶支持

/*
 * Author:Chris Shao
 * Date:2007-7-18
 * Mail:rungoo@126.com
 * */
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace LionBridge.ClassLibrary
{
    /// <summary>
    /// RSS读取器.支持RSS 2.0
    /// </summary>
    public class RssRead
    {
        private string m_path = "";
        private XmlDocument m_rssdom;

        /// <summary>
        /// RSS路径
        /// </summary>
        public string Path
        {
            get { return m_path; }
            set { m_path = value; }
        }
        public RssRead()
        {
        }
        public RssRead(string path)
        {
            m_path = path;
        }
        public bool Read()
        {
            try
            {
                System.Net.WebRequest myRequest = System.Net.WebRequest.Create(m_path);

                //这个请求的响应将会被放到一个WebResponse对象里:

                System.Net.WebResponse myResponse = myRequest.GetResponse();

                // 然后这个WebResponse对象被用来建立一个流来取出XML的值:

                System.IO.Stream rssStream = myResponse.GetResponseStream();

                // 然后可以使用一个XmlDocument对象来存储流中的XML内容。XmlDocument对象用来调入XML的内容:

                m_rssdom = new System.Xml.XmlDocument();
                m_rssdom.Load(rssStream);
                myResponse.Close();
                myRequest.Abort();
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
                return false;
            }
        }
        public string Link
        {
            get {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/link");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Description
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/description");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Language
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/language");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Copyright
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/copyright");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }

        public string pubDate
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/pubDate");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string lastBuildDate
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/lastBuildDate");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Docs
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/docs");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Generator
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/generator");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Here
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/here");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Category
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/category");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public string Image
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/image");
                    if (rssItems.Count > 0)
                    {
                        return "<a  href='" + rssItems[0].SelectSingleNode("link").InnerText + "'><img border='0' src='" + rssItems[0].SelectSingleNode("url").InnerText + "' alt='" + rssItems[0].SelectSingleNode("title").InnerText + "'/></a>";
                    }
                    return "";
                }
            }
        }
        public string Title
        {
            get
            {
                if (m_rssdom == null)
                    return "";
                else
                {
                    System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/title");
                    if (rssItems.Count > 0)
                        return rssItems[0].InnerText;
                    return "";
                }
            }
        }
        public System.Data.DataTable ConvertoDB()
        {
            if (m_rssdom == null)
                return null;
            System.Data.DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("title");
            dt.Columns.Add("link");
            dt.Columns.Add("description");
            dt.Columns.Add("author");
            dt.Columns.Add("category");
            dt.Columns.Add("comments");
            dt.Columns.Add("pubDate");
            dt.Columns.Add("guid");
            System.Xml.XmlNodeList rssItems = m_rssdom.SelectNodes("rss/channel/item");
          
            if (rssItems.Count > 0)
            {
                 System.Xml.XmlNode rssDetail,rssLink,rssDescription,rssauthor,rsscategory,rsscomments,rsspubDate,rssguid;
                 for (int i = 0; i < rssItems.Count; i++)
                 {

                     rssDetail = rssItems.Item(i).SelectSingleNode("title");
                     rssLink = rssItems.Item(i).SelectSingleNode("link");
                     rssDescription = rssItems.Item(i).SelectSingleNode("description");
                     rssauthor = rssItems.Item(i).SelectSingleNode("author");
                     rsscategory = rssItems.Item(i).SelectSingleNode("category");
                     rsscomments = rssItems.Item(i).SelectSingleNode("comments");
                     rsspubDate = rssItems.Item(i).SelectSingleNode("pubDate");
                     rssguid = rssItems.Item(i).SelectSingleNode("guid");
                     string title, link, description, author, category, comments, pubdate, guid;
                     if (rssDetail != null)
                     {
                         title = rssDetail.InnerText;
                     }
                     else
                     {
                         title = "";
                     }
                     if (rssLink != null)
                     {
                         link = rssLink.InnerText;
                     }
                     else
                     {
                         link = "";
                     }
                     if (rssDescription != null)
                     {
                         description = rssDescription.InnerText;
                     }
                     else
                     {
                         description = "";
                     }
                     if (rssauthor != null)
                     {
                         author = rssauthor.InnerText;
                     }
                     else
                     {
                         author = "";
                     }
                     if (rsscategory != null)
                     {
                         category = rsscategory.InnerText;
                     }
                     else
                     {
                         category = "";
                     }
                     if (rsscomments != null)
                     {
                         comments = rsscomments.InnerText;
                     }
                     else
                     {
                         comments = "";
                     }
                     if (rsspubDate != null)
                     {
                         pubdate = rsspubDate.InnerText;
                     }
                     else
                     {
                         pubdate = "";
                     }
                     if (rssguid != null)
                     {
                         guid = rssguid.InnerText;
                     }
                     else
                     {
                         guid = "";
                     }
                     dt.Rows.Add(title, link, description, author, category, comments, pubdate, guid);
                 }

            }
            return dt;
        }
        public string ConvertToHTML()
        {
            System.Data.DataTable dt = ConvertoDB();
            if (dt == null || dt.Rows.Count <= 0)
                return "";
            else
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(Image + Title);
                sb.Append("<UL>\n");
                foreach (System.Data.DataRow r in dt.Rows)
                {
                    sb.Append(string.Format("<li><span class='title'><a href='{1}' target='_blank'>{0}</a></span><span class='pubdate'>{2}</span></li>\n", r["title"], r["link"], r["pubdate"]));
                }
                sb.Append("</UL>\n");
                return sb.ToString();
            }
        }
    }
}

网友评价
no data
勤网系统为您的web2.0网站注入活力.提供爱问.换客.威客系统平台
http://www.wbask.com
wbask.com版权所有 欢迎加入我的爱问圈子.
销售热线:13126605018 QQ:16604609 E-mail:rungoo@126.com