c# 获取Rss数据

 public class Channel
    {
        private string _title;
        private string _link;
        private string _description;
        private List<Item> items = new List<Item>();

        #region 属性
        /**//// <summary>
        /// 标题
        /// </summary>
        public string title
        {
            get{return _title;}
            set{_title = value.ToString();}
        }
        /**//// <summary>
        /// 链接
        /// </summary>
        public string link
       {
            get{return _link;}
            set{_link = value.ToString();}
        }
        /**//// <summary>
        /// 描述
        /// </summary>
        public string description
       {
            get{return _description;}
            set{_description = value.ToString();}
        }
        public List <Item > Items
       {
            get { return items; }
        }
        #endregion

        public Channel(){}


    }//

  

 public class Feed
    {
        private string _url;
        private System.DateTime _lastModified;
        private System.DateTime _lastRssDate;
        private Channel channel = new Channel();

        #region 公共属性
        public string url
        {
            get{return _url;}
            set{_url=value;}
        }
        public System.DateTime lastModified
        {
            get{return _lastModified;}
        }
        public System.DateTime lstRssDate
        {
            set{_lastRssDate=value;}
        }
        public Channel Channel
        {
            get { return channel; }
        }


        #endregion


        public Feed()
        {
        }
       
        public Feed(string url,System.DateTime dt)
        {
            this._url=url;
            this._lastRssDate=dt;
          
        }

        public void Read()
        {
            XmlDocument xDoc=new XmlDocument();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url);
            request.Timeout=15000;
            request.UserAgent=@"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; .NET CLR 1.1.4322)";
            Stream stream;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            this._lastModified = response.LastModified;
            stream = response.GetResponseStream();
            StreamReader sr;
                //System.Xml.XmlReader = new XmlReader();
                //stream=Encoding.Convert(Encoding.GetEncoding("GBK"),Encoding.GetEncoding("gb2312"),Convert.ToSByte(stream));
            if(this.Get_CH(response.Headers["Content-Type"].ToString())=="GBK")
            {
                sr= new StreamReader(stream,System.Text.Encoding.GetEncoding("GB2312"));
                xDoc.Load(sr);
            }
            else
            {
//                sr= new StreamReader(stream,System.Text.Encoding.UTF8);
                xDoc.Load(stream);
            }

            if(this._lastRssDate<this._lastModified)
            {
                XmlNodeList xnList=xDoc.DocumentElement["channel"].SelectNodes("item");
                //                XmlNodeList xnList=xDoc.SelectNodes("items");
                int a= xnList.Count;
                foreach(XmlNode xNode in xnList)
                {
                   
                    Item rt=new Item();
                    rt.title=xNode.SelectSingleNode("title").InnerText.Replace("'","''");
                    rt.link=xNode.SelectSingleNode("link").InnerText.Replace("'","''");
                    try
                    {
                        rt.description = xNode.SelectSingleNode("description").InnerText.Replace("'", "''");
                    }
                    catch { }
                    try
                    {
                        rt.pubDate=xNode.SelectSingleNode("pubDate").InnerText;
                    }
                    catch
                    {
                        rt.pubDate=this._lastModified.ToString();
                    }
                    channel.Items.Add(rt);
                }
            }
        }



        public string Create()
        {
            return "";
        }

        private string Get_CH(string s)
        {
            int l=s.IndexOf("charset=")+8;
            return s.Substring(l,s.Length-l);
        }

    }//

  

 public class Item
    {
        private string _title="";
        private string _link="";
        private string _description="";
        private string _pubDate="";

        #region 属性

        /**//// <summary>
        /// 标题
        /// </summary>
        public string title
        {
            get{
                if (_title.Length > 21)
                {
                    return _title.Substring(0, 21)+"...";

                }
                else
                {return _title; }
                
                
                }
            set{
                
             
                
                _title=value.ToString();}
        }
        /**//// <summary>
        /// 链接
        /// </summary>
        public string link
        {
            get{return _link;}
            set{_link=value.ToString();}
        }
        /**//// <summary>
        /// 描述
        /// </summary>
        public string description
        {
            get{return _description;}
            set
            {
                if (value != null)
                { _description = value; }
                else
                { _description = ""; }
            }
        }
        /**//// <summary>
        /// 频道内容发布日期
        /// </summary>
        public string pubDate
        {
            get{return _pubDate;}
            set{_pubDate=C_Date(value);}
        }

        #endregion

        public Item(){}

        private string C_Date(string input)
        {
            System.DateTime dt;
            try
            {
                dt=Convert.ToDateTime(input);
            }
            catch
            {
                dt=System.DateTime.Now;
            }
            return dt.ToString();
        }
        string  GetDate(DateTime  dt)
        {    string House = dt.ToString("HH");
            int hour = int.Parse(House);
            int mine = dt.Minute;
            int second = dt.Second;
            string AP = "";

            if(hour >12)
            {
            AP="下午";
            hour = hour - 12;
            }
            else 
            {AP="上午";}
        
       return   string.Format("{0} {1} {2}",  dt.ToString ("yyyy/MM/dd"),AP,hour +":"+mine +":"+second );
        }
        public string DateString
        {
            get
            {
                DateTime time = Convert.ToDateTime(pubDate);

                return GetDate(time);
            }
        }

        public DateTime PuDate
        {
            get { return Convert.ToDateTime(pubDate); }
        
        }

    }//

  

原文地址:https://www.cnblogs.com/zhangxin1989/p/2795626.html