All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
教你用PHP写MySQL数据库的用户认证系统_[PHP教程]
SQL,Server,2005—数据库管理10个最重要的特点_[SQL,Server教程]_0
ASP.NET2.0服务器控件开发之基本概念篇_[Asp.Net教程]
动态网页制作技术PHP入门:什么是Apache?_php资料_编程技术
如何建立一个 XML 的开发环境_[XML教程]
javascript,函数,检查图片大小是否大于预期大小_JavaScript技术_编程技术
用PHP制作动态计数器_php资料_编程技术
visual c++中列表视图控件(List Control)
SQL,server,2005安装问题汇总_mssql学习_编程技术
使用Control,Adapters优化Asp.net控件_.net资料_编程技术
Reading number is top 10 pictures
美女浴室写真1
A man's favorite things2
漂亮的跳舞妹妹1
西游四格漫画(四)
Ashlynn Brooke photograph of a group3
The money of more than 100 countries and regions4
海底兵马俑
这才是真正的人体艺术3
The real super beauty14
Get girl by your hand
Download software ranking
Boxer's Top ten classic battle10
尖东毒玫瑰A
美女写真2
Tram sex maniac 2 (H) rar bag12
VeryCD电驴(EasyMule) V1.1.9 Build09081
仙剑奇侠传98版歌曲
C++编程教程第三版
Eclipse-CALMSANNY (second edition)
asp.net技术内幕
Unix video tutorial5
aaa published in(发表于) 2013/12/6 10:24:35 Edit(编辑)
ASP.NET,生成,RSS,Feed_.net资料_编程技术

ASP.NET,生成,RSS,Feed_.net资料_编程技术

ASP.NET 生成 RSS Feed_.net资料_编程技术-数科优化网

  前段时间在写RSS Feed。


  经过了几次的修改,把相关的代码写成了单独的类。感觉重用时还算比较方便的。于是贴出来,大家一起研究研究。以下是RssBase.cs类:


1using System;
2using System.Collections.Generic;
3using System.Xml;
4
5namespace MyMedia.Utilities
6{
7 public class RssBase
8 {
9 RssBase constructor#region RssBase constructor
10 public RssBase(XmlTextWriter rssWriter)
11 {
12 this.rssWriter = rssWriter;
13 }
14 public RssBase(XmlTextWriter rssWriter, bool hasMedia, IList items)
15 {
16 this.rssWriter = rssWriter;
17 this.hasMedia = hasMedia;
18 this.items = items;
19 }
20 #endregion
21
22 [Serializable]
23 public sealed class ItemInfo
24 {
25 ItemInfo constructor#region ItemInfo constructor
26 public ItemInfo() { }
27 public ItemInfo(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor, string itemGuid)
28 {
29 this.itemTitle = itemTitle;
30 this.itemLink = itemLink;
31 this.itemDescription = itemDescription;
32 this.itemAuthor = itemAuthor;
33 this.itemGuid = itemGuid;
34 this.itemPubDate = itemPubDate;
35 }
36 public ItemInfo(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor,
37 string itemGuid, string mediaContentUrl, string mediaTitle, string mediaDescription,
38 string mediaThumbUrl, string mediaThumbWidth, string mediaThumbHeight, string mediaAuthor)
39 {
40 this.itemTitle = itemTitle;
41 this.itemLink = itemLink;
42 this.itemDescription = itemDescription;
43 this.itemPubDate = itemPubDate;
44 this.itemAuthor = itemAuthor;
45 this.itemGuid = itemGuid;
46 this.mediaContentUrl = mediaContentUrl;
47 this.mediaTitle = mediaTitle;
48 this.mediaDescription = mediaDescription;
49 this.mediaThumbUrl = mediaThumbUrl;
50 this.mediaThumbWidth = mediaThumbWidth;
51 this.mediaThumbHeight = mediaThumbHeight;
52 this.mediaAuthor = mediaAuthor;
53 }
54 #endregion
55
56 Internal item variables#region Internal item variables
57 // Item variables
58 private string itemTitle;
59 private string itemLink;
60 private string itemDescription;
61 private string itemPubDate = DateTime.Now.ToString("r");
62 private string itemDateTaken = DateTime.Now.ToString();
63 private string itemAuthor;
64 private string itemGuid;
65 // Media variables
66 private string mediaContentUrl;
67 private string mediaTitle;
68 private string mediaDescription;
69 private string mediaThumbUrl;
70 private string mediaThumbWidth;
71 private string mediaThumbHeight;
72 private string mediaAuthor;
73 #endregion
74
75 Item properties#region Item properties
76 public string ItemTitle
77 {
78 set { itemTitle = value; }
79 get { return itemTitle; }
80 }
81 public string ItemLink
82 {
83 set { itemLink = value; }
84 get { return itemLink; }
85 }
86 public string ItemDescription
87 {
88 set { itemDescription = value; }
89 get { return itemDescription; }
90 }
91 public string ItemPubDate
92 {
93 set { itemPubDate = value; }
94 get { return itemPubDate; }
95 }
96 public string ItemDateTaken
97 {
98 set { itemDateTaken = value; }
99 get { return itemDateTaken; }
100 }
101 public string ItemAuthor
102 {
103 set { itemAuthor = value; }
104 get { return itemAuthor; }
105 }
106 public string ItemGuid
107 {
108 set { itemGuid = value; }
109 get { return itemGuid; }
110 }
111 public string MediaContentUrl
112 {
113 set { mediaContentUrl = value; }
114 get { return mediaContentUrl; }
115 }
116 public string MediaTitle
117 {
118 set { mediaTitle = value; }
119 get { return mediaTitle; }
120 }
121 public string MediaDescription
122 {
123 set { mediaDescription = value; }
124 get { return mediaDescription; }
125 }
126 public string MediaThumbUrl
127 {
128 set { mediaThumbUrl = value; }
129 get { return mediaThumbUrl; }
130 }
131 public string MediaThumbWidth
132 {
133 set { mediaThumbWidth = value; }
134 get { return mediaThumbWidth; }
135 }
136 public string MediaThumbHeight
137 {
138 set { mediaThumbHeight = value; }
139 get { return mediaThumbHeight; }
140 }
141 public string MediaAuthor
142 {
143 set { mediaAuthor = value; }
144 get { return mediaAuthor; }
145 }
146 #endregion
147
148 }
149
150 Const string#region Const string
151 private const string TITLE = "MyMedia RSS";
152 private const string XMLNS_MEDIA = "http://www.MyWii.com.au";
153 private const string XMLNS_DC = "http://purl.org/dc/elements/1.1/";
154 private const string LINK = "http://www.MyWii.com.au/";
155 private const string DESCRIPTION = "description";
156 private const string LANGUAGE = "en-us";
157 private const string COPYRIGHT = "Copyright 2006";
158 private const string GENERATOR = "MyMedia RSS Generator";
159 private const string IMAGE_URL = "http://www.MyWii.com.au/img/main/feed.gif";
160 private const string IMAGE_TITLE = "MyWii";
161 private const string IMAGE_LINK = "http://www.MyWii.com.au";
162 private string PUB_DATE = DateTime.Now.ToString("r");
163 private string LAST_BUILD_DATE = DateTime.Now.ToString("r");
164
165 #endregion
166
167 Internal member variables#region Internal member variables
168 private XmlTextWriter rssWriter;
169 private bool hasMedia;
170 private IList items;
171 #endregion
172
173 Properties#region Properties
174 public XmlTextWriter RssWriter
175 {
176 set { rssWriter = value; }
177 get { return rssWriter; }
178 }
179 public bool HasMedia
180 {
181 set { hasMedia = value; }
182 get { return hasMedia; }
183 }
184 public IList Items
185 {
186 set { items = value; }
187 get { return items; }
188 }
189
190 #endregion
191
192 Private method#region Private method
193
194 private void WritePrologue()
195 {
196 rssWriter.WriteStartDocument();
197 rssWriter.WriteStartElement("rss");
198 rssWriter.WriteAttributeString("version", "2.0");
199 rssWriter.WriteAttributeString("xmlns:media", XMLNS_MEDIA);
200 rssWriter.WriteAttributeString("xmlns:dc", XMLNS_DC);
201 rssWriter.WriteString("\n ");
202 // Write in channel block
203 rssWriter.WriteStartElement("channel");
204 rssWriter.WriteString("\n ");
205 rssWriter.WriteElementString("title", TITLE);
206 rssWriter.WriteString("\n ");
207 rssWriter.WriteElementString("link", LINK);
208 rssWriter.WriteString("\n ");
209 rssWriter.WriteElementString("description", DESCRIPTION);
210 rssWriter.WriteString("\n ");
211 rssWriter.WriteElementString("pubDate", PUB_DATE);
212 rssWriter.WriteString("\n ");
213 rssWriter.WriteElementString("lastBuildDate", LAST_BUILD_DATE);
214 rssWriter.WriteString("\n ");
215 rssWriter.WriteElementString("language", LANGUAGE);
216 rssWriter.WriteString("\n ");
217 rssWriter.WriteElementString("copyright", COPYRIGHT);
218 rssWriter.WriteString("\n ");
219 rssWriter.WriteElementString("generator", GENERATOR);
220 rssWriter.WriteString("\n ");
221 // Write in image block
222 rssWriter.WriteStartElement("image");
223 rssWriter.WriteString("\n ");
224 rssWriter.WriteElementString("url", IMAGE_URL);
225 rssWriter.WriteString("\n ");
226 rssWriter.WriteElementString("title", IMAGE_TITLE);
227 rssWriter.WriteString("\n ");
228 rssWriter.WriteElementString("link", IMAGE_LINK);
229 rssWriter.WriteString("\n ");
230 rssWriter.WriteEndElement();
231 rssWriter.WriteString("\n ");
232 }
233
234 /**////


235 /// Write in items
236 ///

237 private void WriteItem(ItemInfo item)
238 {
239 // Write in item block
240 rssWriter.WriteStartElement("item");
241 rssWriter.WriteString("\n ");
242 rssWriter.WriteElementString("title", item.ItemTitle);
243 rssWriter.WriteString("\n ");
244 rssWriter.WriteElementString("link", item.ItemLink);
245 rssWriter.WriteString("\n ");
246
247 rssWriter.WriteStartElement("description");
248 rssWriter.WriteString("\n ");
249 rssWriter.WriteCData(item.ItemDescription);
250 rssWriter.WriteString("\n ");
251 rssWriter.WriteEndElement();
252
253 rssWriter.WriteString("\n ");
254 rssWriter.WriteElementString("pubDate", item.ItemPubDate);
255 rssWriter.WriteString("\n ");
256 rssWriter.WriteElementString("dc:date.Taken", item.ItemDateTaken);
257 rssWriter.WriteString("\n ");
258 rssWriter.WriteElementString("author", item.ItemAuthor);
259 rssWriter.WriteString("\n ");
260 rssWriter.WriteStartElement("guid");
261 rssWriter.WriteAttributeString("isPermaLink", "false");
262 rssWriter.WriteString(item.ItemGuid);
263 rssWriter.WriteEndElement();
264
265
266 // Write item media here
267
268 }
269
270 /**////
271 /// Write in item media
272 ///

273 /// ItemInfo item
274 private void WriteItemMedia(ItemInfo item)
275 {
276 // Write in media
277 rssWriter.WriteString("\n ");
278 rssWriter.WriteStartElement("media:content");
279 rssWriter.WriteAttributeString("url", item.MediaContentUrl);
280 rssWriter.WriteAttributeString("type", "image/jpeg");
281 rssWriter.WriteEndElement();
282 rssWriter.WriteString("\n ");
283 rssWriter.WriteElementString("media:title", item.MediaTitle);
284 rssWriter.WriteString("\n ");
285 rssWriter.WriteStartElement("media:text");
286 rssWriter.WriteAttributeString("type", "html");
287 rssWriter.WriteString(item.MediaDescription);
288 rssWriter.WriteEndElement();
289 rssWriter.WriteString("\n ");
290 rssWriter.WriteStartElement("media:thumbnail");
291 rssWriter.WriteAttributeString("url", item.MediaThumbUrl);
292 rssWriter.WriteAttributeString("height", item.MediaThumbHeight);
293 rssWriter.WriteAttributeString("width", item.MediaThumbWidth);
294 rssWriter.WriteEndElement();
295 rssWriter.WriteString("\n ");
296 rssWriter.WriteStartElement("media:credit");
297 rssWriter.WriteAttributeString("role", "photographer");
298 rssWriter.WriteString(item.MediaAuthor);
299 rssWriter.WriteEndElement();
300 rssWriter.WriteString("\n ");
301
302 }
303
304 /**////
305 /// Close item element
306 ///

307 private void WriteItemEnd()
308 {
309 rssWriter.WriteString("\n ");
310 rssWriter.WriteEndElement();
311 rssWriter.WriteString("\n ");
312 }
313
314 /**////
315 /// Close all the elements
316 ///

317 private void WriteEnd()
318 {
319 rssWriter.WriteEndElement();
320 rssWriter.WriteString("\n");
321 rssWriter.WriteEndElement();
322 rssWriter.WriteEndDocument();
323 }
324
325 #endregion
326
327 /**////
328 /// Write RSS feed
329 ///

330 public void WriteRSS()
331 {
332 WritePrologue();
333 foreach (ItemInfo info in items)
334 {
335 WriteItem(info);
336 if (hasMedia)
337 WriteItemMedia(info);
338 WriteItemEnd();
339 }
340 WriteEnd();
341 }
342 }
343}


  然后使用一个FeedBase.cs类,调用上面的RssBase类中的方法和属性。代码如下。(该文件有改动,如要编译,需做相关修改)


1 using System.Collections.Generic;
2 using System.Configuration;
3 using System.Data;
4 using System.Text;
5 using System.Web;
6 using System.Web.UI;
7 using System.Xml;
8
9
10public class FeedBase : Page
11{
12 public void GenerateRss()
13 {
14
15 IList items = new List();
16
17 // Populate items.
18 foreach (DataRow row in rows)
19 {
20 RssBase.ItemInfo item = new RssBase.ItemInfo(row["Title"].ToString(), "link", row["Description"].ToString(), row["PubDate"].ToString(), row["Author"].ToString(), "guid");
21 items.Add(item);
22 }
23
24 XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream,
25 Encoding.UTF8);
26
27 RssBase rssBase = new RssBase(xmlWriter, false, items);
28 rssBase.WriteRSS();
29
30 xmlWriter.Flush();
31 xmlWriter.Close();
32
33 Response.ContentEncoding = Encoding.UTF8;
34 Response.ContentType = "text/xml";
35 Response.Cache.SetCacheability(HttpCacheability.Public);
36
37 Response.End();
38 }
39
40 }


  最后,只要新建一个feed.aspx文件,继承FeedBase类,调用该类中的GenerateRss()方法就可以轻松生成你所期望的RSS Feed :)






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.