Web2.0时是以Blog,Wike,Tag,RSS等技术为代表的以个性化为中心的新一代互联网模式,RSS比起Blog等名词似乎还不算太热。但打开网页仍是遍布了RSS,Xml等醒目的图标,打开页面Mathon浏览器也是一个劲的提示有新的RSS连接,前一段一个项
目需要,自己写了一个.Net下面生成RSS信息的类,如下:
1
using System;2
using System.Xml;3
using System.Collections;4
using System.Globalization;5
using System.Web;6

7
namespace BLRL8
{9
/// <summary>10
/// Summary description for Rss.11
/// </summary>12
public class Rss13
{14
const string dublinCoreNamespaceUri = @"http://purl.org/dc/elements/1.1/";15
const string slashNamespaceUri = @"http://purl.org/rss/1.0/modules/slash/";16
const string syndicationNamespaceUri = @"http://purl.org/rss/1.0/modules/syndication/";17
//RSS频道结构18
struct RssChannel 19
{20
public string title;//标题21
public string link;//连接22
public string language;//语言 23
public string description;//描述24
public string webMaster;//发布者25
}26

27
//RSS图片信息28
struct RssImage29
{30
public string url;//地址31
public string title;//标题32
public int height ;//高度33
public int width;//长度34
}35
36
//RSS项结构37
struct RssItem 38
{39
public string title;//标题40
public string catalog;//类别41
public string link;//连接42
public DateTime pubDate;//发布日期43
public string description;//描述44

45
}46
public Rss()47
{48
//49
// TODO: Add constructor logic here50
//51
}52
/// <summary>53
///添加rss版本信息54
/// </summary>55
/// <param name="xmlDocument"></param>56
/// <returns></returns>57
public static XmlDocument AddRssPreamble( XmlDocument xmlDocument)58
{59
//声明创建1.0版本得xml60
XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "utf-8", null);61
xmlDocument.InsertBefore(xmlDeclaration, xmlDocument.DocumentElement);62

63
XmlElement rssElement = xmlDocument.CreateElement("rss");64

65
XmlAttribute rssVersionAttribute = xmlDocument.CreateAttribute("version");66
rssVersionAttribute.InnerText = "2.0";67
rssElement.Attributes.Append(rssVersionAttribute);68
xmlDocument.AppendChild(rssElement);69

70
71
XmlAttribute dublicCoreNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:dc");72
dublicCoreNamespaceUriAttribute.InnerText = dublinCoreNamespaceUri;73
rssElement.Attributes.Append(dublicCoreNamespaceUriAttribute);74

75
XmlAttribute slashNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:slash");76
slashNamespaceUriAttribute.InnerText = slashNamespaceUri;77
rssElement.Attributes.Append(slashNamespaceUriAttribute);78

79
XmlAttribute syndicationNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:sy");80
syndicationNamespaceUriAttribute.InnerText = syndicationNamespaceUri;81
rssElement.Attributes.Append(syndicationNamespaceUriAttribute);82

83

84
return xmlDocument;85
}86
87
/// <summary>88
/// 添加频道89
/// </summary>90
/// <param name="xmlDocument"></param>91
/// <param name="channel"></param>92
/// <returns></returns>93
private static XmlDocument AddRssChannel( XmlDocument xmlDocument, RssChannel channel) 94
{95
XmlElement channelElement = xmlDocument.CreateElement("channel");96
XmlNode rssElement = xmlDocument.SelectSingleNode("rss");97

98
rssElement.AppendChild(channelElement);99

100
//添加标题101
XmlElement channelTitleElement = xmlDocument.CreateElement("title");102
channelTitleElement.InnerText = channel.title;103
channelElement.AppendChild(channelTitleElement);104

105
//添加连接106
XmlElement channelLinkElement = xmlDocument.CreateElement("link");107
channelLinkElement.InnerText = channel.link;108
channelElement.AppendChild(channelLinkElement);109

110
//添加描述111
XmlElement channelDescriptionElement = xmlDocument.CreateElement("description");112
XmlCDataSection cDataDescriptionSection = xmlDocument.CreateCDataSection(channel.description);113
channelDescriptionElement.AppendChild(cDataDescriptionSection);114
channelElement.AppendChild(channelDescriptionElement);115
116
//添加语言117
XmlElement languageElement = xmlDocument.CreateElement("language");118
languageElement.InnerText = channel.language;119
channelElement.AppendChild(languageElement);120

121
//添加发布者122
XmlElement webMasterElement = xmlDocument.CreateElement("webMaster");123
webMasterElement.InnerText = channel.webMaster;124
channelElement.AppendChild(webMasterElement);125

126
return xmlDocument;127
}128

129

130
//添加RssImage131
private static XmlDocument AddRssImage(XmlDocument xmlDocument, RssImage img) 132
{133
XmlElement imgElement = xmlDocument.CreateElement("image");134
XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel"); 135

136
//创建标题137
XmlElement imageTitleElement = xmlDocument.CreateElement("title");138
imageTitleElement.InnerText = img.title;139
imgElement.AppendChild(imageTitleElement);140

141
//创建地址142
XmlElement imageUrlElement = xmlDocument.CreateElement("url");143
imageUrlElement.InnerText = img.url;144
imgElement.AppendChild(imageUrlElement);145

146
//创建高度147
XmlElement imageHeightElement = xmlDocument.CreateElement("height");148
imageHeightElement.InnerText = img.height.ToString();149
imgElement.AppendChild(imageHeightElement);150

151
//创建长度152
XmlElement imageWidthElement = xmlDocument.CreateElement("width");153
imageWidthElement.InnerText = img.width.ToString();154
imgElement.AppendChild(imageWidthElement);155

156
//将图像节点添加到频道节点里面157
channelElement.AppendChild(imgElement);158
return xmlDocument;159
160
}161

162

163
/// <summary>164
/// 添加项信息165
/// </summary>166
/// <param name="xmlDocument"></param>167
/// <param name="item"></param>168
/// <returns></returns>169
private static XmlDocument AddRssItem (XmlDocument xmlDocument, RssItem item) 170
{171
XmlElement itemElement = xmlDocument.CreateElement("item");172
XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel");173

174
//创建标题175
XmlElement itemTitleElement = xmlDocument.CreateElement("title"); 176
XmlCDataSection cDataTitleSection = xmlDocument.CreateCDataSection(item.title);177
itemTitleElement.AppendChild(cDataTitleSection); 178
itemElement.AppendChild(itemTitleElement);179

180
//创建日期181
XmlElement pubDateElement = xmlDocument.CreateElement("pubDate");182
pubDateElement.InnerText = XmlConvert.ToString(item.pubDate.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ss");183
itemElement.AppendChild(pubDateElement);184
185
//添加连接186
XmlElement itemLinkElement = xmlDocument.CreateElement("link");187
itemLinkElement.InnerText = item.link;188
itemElement.AppendChild(itemLinkElement);189

190
//创建描述191
XmlElement itemDescriptionElement = xmlDocument.CreateElement("description");192
XmlCDataSection cDataDescriptionSection = xmlDocument.CreateCDataSection(item.description); 193
itemDescriptionElement.AppendChild(cDataDescriptionSection);194
itemElement.AppendChild(itemDescriptionElement);195

196

197
//创建类型198
XmlElement itemcatalogElement = xmlDocument.CreateElement("catalog");199
itemcatalogElement.InnerText = item.catalog;200
itemElement.AppendChild(itemcatalogElement);201

202
//将RssItem添加到频道节点里面203
channelElement.AppendChild(itemElement);204

205
return xmlDocument;206
}207
}208
}根据特定的需要,可以先将数据读取到列表里面,然后遍历列表,调用上述方法,生成Xml字符串。
这个字符串就是RS用到XML字符串了。也可以入aspx文件,然后用
<link type="application/rss+xml" rel="alternate" href="rssfeed.aspx">