.Net/C#: 利用反射编写通用的 rss 2.0 的 reader__教程 |
|
日期:2007-5-20 1:25:45 人气:137 [大 中 小] |
|
|
|
/* .Net/C#: 利用反射编写通用的 rss 2.0 的 reader
最近在写一个 Simple Rss Reader 网上找到现成代码两种: 1.代码简单的,但不够通用 (如: 本站的一些专用 rss reader) 2.代码复杂的,但没有足够时间去消化 (如: rssbandit)
遂自己动手: 由于 rss 的基本属性大家都有! 但一些特殊不通用属性,如: slash:comments wfw:comment wfw:commentRss trackbackping 不一定存在! 如何处理??? 我想到了 Reflection,就此提出以下解决方案: 1. Class RssHeader 用于表示 Rss 的头信息 你可以在为其添加新属性,原则是: 成员变量 Fieild 的名称为 rss 的 XML 源对应的属性名称前加下划线,XML 属性名称含有 ":" 将其滤掉! 如: zh-CHS 将其影射为: private string _dclanguage public string DcLanguage { get { return this._dclanguage; } }
2. Class RssItem 用于表示 Rss 的 Item 添加新属性的原则同 RssHeader!
3. 获取 rss 的 XML 源后通过递归遍历节点 (class SimpleRssReader) 根据实际存在的 rss 属性,通过反射,"构造实例化" RssHeader 和 RssItem! 请仔细参阅 class SimpleRssReader 的 Travel 方法!
4. 数据库 (本文使用了 Micrshaoft Data Access Application Block 3.1) 表: Channels (主表) ChannelsDetails (细表) 字段名称及其数据类型严格按照 rss 的 XML 源对应的属性名称,XML 属性名称含有 ":" 将其滤掉! 存储过程: SP_AddChannel SP_AddChannelsDetails 参数名称及其数据类型严格按照 rss 的 XML 源对应的属性名称,XML 属性名称含有 ":" 将其滤掉!
命令行编译: csc SimpleRsReader.cs /r:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.OracleClient.dll
全部代码 SimpleRssReader.cs 在此下载 http://www.cnblogs.com/Files/Microshaoft/SimpleRssReader.rar
*/ namespace Microshaoft { using System; using System.Xml; using System.Text; using System.Reflection; using System.Collections; using System.Text.RegularExpressions;
全部代码 SimpleRssReader.cs 在此下载 http://www.cnblogs.com/Files/Microshaoft/SimpleRssReader.rar
*/ namespace Microshaoft { using System; using System.Xml; using System.Text; using System.Reflection; using System.Collections; using System.Text.RegularExpressions;
public class RssHeader { //feed URL public RssHeader(string URL) { this._URL = URL; }
public string Title { get { return this._title; } }
public string Description { get { return this._description; } }
public string Link { get { return this._link; } }
public string Language { get { return this._language; } }
public string Generator { get { return this._generator; } }
public string Ttl { get { return this._ttl; } }
public string Copyright { get { return this._copyright; } }
public DateTime PubDate { get { return Util.ParseDateTime(this._pubDate); } }
public string Category { get { return this._category; } }
public DateTime LastBuildDate { get { return Util.ParseDateTime(this._lastBuildDate); } } public string ManagingEditor |
|
出处:本站原创 作者:佚名 |
|
|