`
wyf
  • 浏览: 433374 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

C# 生成RSS通用类

阅读更多

主要用到了几个类文件:

Channel.cs 、ChannelCollection.cs 、 Feed.cs 、 Item.cs  、 ItemCollection.cs

下面给出各个类的源文件:

1、Channel.cs 类

using System;

namespace Utility.Rss
{
    /// <summary>
    /// channel 
    /// </summary>
    [Serializable()]
    public class Channel
    {
        private string _title;
        private string _link;
        private string _description;
        private ItemCollection items = new ItemCollection();

        #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 ItemCollection Items
        {
            get { return items; }
        }
        #endregion

        public Channel(){}


    }//
}//

2、ChannelCollection.cs 类

using System;

namespace Utility.Rss
{
    /// <summary>
    /// rssChannelCollection 的摘要说明。
    /// </summary>
    public class ChannelCollection : System.Collections.CollectionBase
    {
        public Channel this[int index]
        {
            get 
            { 
                return ((Channel)(List[index])); 
            }
            set 
            { 
                List[index] = value;
            }
        }

        public int Add(Channel item)
        {
            return List.Add(item);
        }


        public ChannelCollection()
        {            
        }


    }//
}//

  3、Feed.cs类

using System;
using System.Xml;
using System.IO;
using System.Net;
using System.Text;

namespace Utility.Rss
{
    /// <summary>
    /// rssFeed 的摘要说明。
    /// </summary>
    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("'","''");
                    rt.description=xNode.SelectSingleNode("description").InnerText.Replace("'","''");
                    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);
        }

    }//
}//

 4、Item.cs类

using System;

namespace Utility.Rss
{
    /// <summary>
    /// rssItem 的摘要说明。
    /// </summary>
    public class Item
    {
        private string _title;
        private string _link;
        private string _description;
        private string _pubDate;

        #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();}
        }
        /// <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();
        }

    }//
}// 

5、ItemCollection.cs类

using System;

namespace Utility.Rss
{
    /// <summary>
    /// rssChannelCollection 的摘要说明。
    /// </summary>
    public class ItemCollection : System.Collections.CollectionBase
    {
        public Item this[int index]
        {
            get { return ((Item)(List[index])); }
            set 
            { 
                List[index] = value;
            }
        }
        public int Add(Item item)
        {
            return List.Add(item);
        }

        public ItemCollection()
        {            
        }

    }//
}//

  “C#中解析Rss实现思路及通用类”应用的实例:

string strHtml = "";
string url = "http://rss.xinhuanet.com/rss/native.xml";

Utility.Rss.Feed feed = new Utility.Rss.Feed(url,DateTime.Parse(System.DateTime.Now.AddDays(-1).ToShortDateString()));
                    feed.Read();
                    strHtml += "[记录数目:"+feed.Channel.Items.Count+"]<br><br>";
                    for(int i=0;i<feed.Channel.Items.Count;i++)
                    {
//                        arr = feed.Channel.Items[i].title.Split(cSplit);
                        strHtml +="  <a href="+feed.Channel.Items[i].link+" target=_blank><B>"+ feed.Channel.Items[i].title + "</B></a><br>";
                        strHtml +="  <font color=red>"+feed.Channel.Items[i].pubDate + "</font><br>";
                        strHtml +="  "+feed.Channel.Items[i].description + "<br>";
                    }


Response.Write(strHtml);
 
分享到:
评论

相关推荐

    C#自动生成实体类

    3. **实体类生成**:有了数据库表的详细信息,工具将生成C#代码,每个表对应一个类,每个列对应类的一个属性。对于主键,可能会添加特殊的标识符;对于外键,可能生成导航属性来表示关系。此外,还可能根据需求生成...

    C#快速生成实体类小工具

    标题 "C#快速生成实体类小工具" 描述的是一个基于C#编程语言开发的实用程序,该程序能够从SQL Server数据库中自动生成实体类。这个工具极大地简化了开发过程,尤其是在数据驱动的应用程序中,它能帮助程序员快速地...

    C#操作Access通用类

    C# 访问Access数据库通用类

    根据SQLServer数据表生成C#实体类。生成数据库模型.zip

    当需要在C#项目中与SQLServer数据库进行交互时,通常会从数据库表生成对应的C#实体类,以提高开发效率和代码的可维护性。 本压缩包"根据SQLServer数据表生成C#实体类"提供了相关的工具和源码,旨在帮助开发者快速...

    C# JSON实体类生成工具

    C# JSON实体类生成工具是一种高效实用的辅助开发软件,主要针对C#程序员设计,能够极大地简化处理JSON数据的工作流程。在C#编程环境中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,广泛应用于...

    C#公共类通用类非常齐全

    参数验证的通用验证程序。(ArgumentValidation.cs) 这个类提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) byte字节数组操作辅助类(BytesTools.cs) 处理数据类型转换,数制转换、编码转换...

    C#数据库实体类生成工具

    《C#数据库实体类生成工具详解与应用》 在软件开发过程中,数据库操作是不可或缺的一环,而将数据库中的表结构映射为程序中的实体类是常见的数据访问模式。C#作为.NET框架的主要编程语言,提供了丰富的库和工具来...

    Oracle数据库表生成C#实体类

    "Oracle数据库表生成C#实体类"是一个实用的小工具,它的主要目的是自动化这个过程,避免开发者手动编写繁琐的实体类代码。虽然这个工具可能存在一些小问题,但它可以大大提高开发效率,尤其是在处理大量表结构时。 ...

    C#实体类自动生成器

    "C#实体类自动生成器"是一个工具,它能根据数据库的表结构自动创建对应的C#实体类,极大地提高了开发效率,减少了手动编写代码的工作量。 C#是一种广泛使用的面向对象的编程语言,尤其在.NET框架下,它的应用非常...

    C#MySql通用类库

    C#MySql通用类库

    C#实体类自动生成工具

    C#实体类自动生成工具是一种高效开发辅助工具,主要用于简化C#编程中常见的数据模型类创建过程。在软件开发中,实体类通常用于映射数据库表结构,它们封装了数据并提供了一些基本操作。手动创建这些类可能会耗费大量...

    C#打印条码不需要使用第三方插件,C#生成二维码,导出PDF,c#生成二维码超级简单,方便直接使用,易入门

    在C#编程环境中,生成条码和二维码是一项常见的任务,特别是在需要进行数据交换或打印标签的应用中。这个压缩包提供了一套完整的C#解决方案,无需依赖任何第三方插件,即可轻松实现二维码的生成、显示以及导出为PDF...

    C#生成pdf文件

    当涉及到生成PDF文件时,C#提供了多种方法来实现这一功能。PDF(Portable Document Format)文件格式因其跨平台性和易于共享的特性,常用于文档的创建和分发。本篇文章将深入探讨如何利用C#生成PDF文件。 首先,...

    C# .net数据库表实体类生成,一键生成数据库所有表的实体类

    本文将详细介绍如何利用C#和.NET来创建这样一个工具,以便快速生成数据库表的实体类。首先,我们需要连接到数据库并获取其架构信息。这可以通过ADO.NET的`SqlConnection`类实现,连接字符串应包含数据库服务器、...

    C#代码生成器类生成器

    类生成器则是自动化工具,它能根据预设规则或输入数据(如数据库表结构)自动生成类的代码。对于C#来说,这意味着开发者可以利用这类工具快速创建与数据库表对应的实体类,这些类通常包含与表字段相对应的属性和用于...

    VC++ 调用 C#生成DLL的多种方法

    "VC++ 调用 C#生成DLL的多种方法" 本文将详细介绍 VC++ 调用 C# 生成 DLL 的多种方法,这些方法都是常规方法和变通方法。我们将从 COM、CLR、API 等方面来介绍这些方法,并且提供了相关的优点和缺点分析。 常规...

    C#实体类生成器

    标题中的"C#实体类生成器"是指一种工具,它的主要功能是自动化地为数据库表或JSON结构生成对应的C#实体类代码。实体类在软件开发中扮演着数据载体的角色,通常用于表示数据库中的表或者API交互的数据模型。手动创建...

    c#数据库访问通用类

    访问数据库的通用类,从连接字符串设置到数据库的查询、增加、删除和修改等

    C# 数据类生成器ACCESS

    标题 "C# 数据类生成器ACCESS" 涉及的核心技术是C#编程语言与数据库交互,特别是针对ACCESS数据库的自动化操作。这个工具的主要目的是帮助开发者快速生成与ACCESS数据库表结构对应的C#数据类,从而简化数据库操作的...

    c# asp.net 随机码通用生成类

    本篇将详细讲解C# ASP.NET环境下创建一个随机码通用生成类的方法,以及如何利用此类生成包含图片的随机验证码。 首先,我们要理解C#中的随机数生成器。`System.Random`类是C#标准库提供的用于生成随机数的工具,...

Global site tag (gtag.js) - Google Analytics