`
wyf
  • 浏览: 436902 次
  • 性别: 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数据库中自动生成实体类。这个工具极大地简化了开发过程,尤其是在数据驱动的应用程序中,它能帮助程序员快速地...

    根据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#实体类自动生成工具

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

    C#MySql通用类库

    C#MySql通用类库

    C#生成html静态页面示例

    2. **Default.aspx.cs** 和 **MoBan.aspx.cs**:这些是对应的C#后台代码文件,包含了处理网页逻辑的类和方法。例如,可能会有处理用户输入、数据库交互或生成HTML内容的函数。 3. **Web.Config**:这是ASP.NET应用...

    C#快速开发之实体类生成工具

    "C#快速开发之实体类生成工具"是专为解决这个问题而设计的实用工具,它极大地提高了开发效率,避免了手动编写大量实体类代码的繁琐工作。此工具能够连接到数据库,并基于数据库中的表结构自动生成对应的C#实体类,...

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

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

    C#生成pdf文件

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

    C# 各种通用类集合

    01.程序配置管理辅助类 MyAppConfigHelper.cs 02.实现各种转换的操作辅助类 MyConvertHelper.cs 03.DataReader的辅助类 MyDataReaderHelper.cs 04.DataTable操作辅助类 MyDataTableHelper.cs 05.DateTime的辅助类 ...

    Xml文件自动生成C# Class类

    在我们的案例中,我们将反向操作,即从XML文档生成类。这通常通过以下步骤实现: 1. **分析XML结构**:首先,我们需要解析XML文件,理解其节点结构和属性。这可以通过使用`System.Xml.Linq`库中的`XDocument`或`Xml...

    C#各种通用Utils类整理

    这是非常有用的C#工具包,为解决各种现实的问题提供了通用现成的代码,不须要我们程序员再重复造轮子包含加解密,获取随机值,上传图片,上传文件,文件操作,文件压缩,验证码识别等各种常用的操作类直接调用接口

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

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

    C#代码生成器类生成器

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

    MYSQL 生成C#实体类

    标题提到的"MYSQL 生成C#实体类"是一个工具或者源码,它能帮助开发者自动生成对应于MySQL数据库表结构的C#实体类代码,但需要注意的是,这个工具可能不包含文件生成功能,仅提供代码文本输出。 首先,让我们理解...

Global site tag (gtag.js) - Google Analytics