Web 2.0时代RSS的.Net实现
2006-06-21 14:31
525 查看
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 BLRL
8
{
9
/// <summary>
10
/// Summary description for Rss.
11
/// </summary>
12
public class Rss
13
{
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 RssImage
29
{
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 here
50
//
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版本得xml
60
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
//添加RssImage
131
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">
调用下RSS文件,马桶等软件就会自动提示有RRS信息了
http://jillzhang.cnblogs.com/archive/2006/06/11/423086.html
目需要,自己写了一个.Net下面生成RSS信息的类,如下:
1
using System;
2
using System.Xml;
3
using System.Collections;
4
using System.Globalization;
5
using System.Web;
6
7
namespace BLRL
8
{
9
/// <summary>
10
/// Summary description for Rss.
11
/// </summary>
12
public class Rss
13
{
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 RssImage
29
{
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 here
50
//
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版本得xml
60
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
//添加RssImage
131
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">
调用下RSS文件,马桶等软件就会自动提示有RRS信息了
http://jillzhang.cnblogs.com/archive/2006/06/11/423086.html
相关文章推荐
- Web 2.0时代RSS的.Net实现
- Web 2.0时代RSS的.Net实现
- Web 2.0时代RSS的.Net实现
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- 在Web微信应用中使用博客园RSS以及Quartz.NET实现博客文章内容的定期推送功能
- Web2.0时代RSS的.Net实现
- .net-WEB中实现打印预览
- Web2.0时代,RSS你会用了吗?(技术实现总结)
- JSF 和 Ajax:使用 Rational Application Developer V7 轻松实现 Web 2.0 应用程序
- 基于.net搭建热插拔式web框架(实现原理)
- JAVA与.NET的相互调用——通过Web服务实现相互调用
- Web C#2.0 DataSet和Reader封装组件实现自动多数据库切换(含组件源码和实例)
- 把Asp.Net Forums (version 2.3.2537 ) 转换为.net 2.0 版Web Application Projects
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(四) 之 用户搜索(Elasticsearch),加好友流程(1)。
- Web2.0时代,RSS你会用了吗?(技术实现总结)
- 基于.net搭建热插拔式web框架(实现原理)
- 实现读取RSS 2.0的Javascript类
- .NET2.0 WinForms系列(一)实现窗体切分
- ASP.net[2.0示例]实现折线,柱状,扇形图--web chart控件