/* .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 属性名称含有 ":" 将其滤掉! 如: <dc:language>zh-CHS</dc:language> 将其影射为: 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 属性名称含有 ":" 将其滤掉! |