ASP.NET 生成 RSS Feed(2)
点击次数:17 次 发布日期:2008-11-26 12:25:13 作者:源代码网
|
源代码网推荐 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(" "); 源代码网推荐 202 // Write in channel block 源代码网推荐 203 rssWriter.WriteStartElement("channel"); 源代码网推荐 204 rssWriter.WriteString(" "); 源代码网推荐 205 rssWriter.WriteElementString("title", TITLE); 源代码网推荐 206 rssWriter.WriteString(" "); 源代码网推荐 207 rssWriter.WriteElementString("link", LINK); 源代码网推荐 208 rssWriter.WriteString(" "); 源代码网推荐 209 rssWriter.WriteElementString("description", DESCRIPTION); 源代码网推荐 210 rssWriter.WriteString(" "); 源代码网推荐 211 rssWriter.WriteElementString("pubDate", PUB_DATE); 源代码网推荐 212 rssWriter.WriteString(" "); 源代码网推荐 213 rssWriter.WriteElementString("lastBuildDate", LAST_BUILD_DATE); 源代码网推荐 214 rssWriter.WriteString(" "); 源代码网推荐 215 rssWriter.WriteElementString("language", LANGUAGE); 源代码网推荐 216 rssWriter.WriteString(" "); 源代码网推荐 217 rssWriter.WriteElementString("copyright", COPYRIGHT); 源代码网推荐 218 rssWriter.WriteString(" "); 源代码网推荐 219 rssWriter.WriteElementString("generator", GENERATOR); 源代码网推荐 220 rssWriter.WriteString(" "); 源代码网推荐 221 // Write in image block 源代码网推荐 222 rssWriter.WriteStartElement("image"); 源代码网推荐 223 rssWriter.WriteString(" "); 源代码网推荐 224 rssWriter.WriteElementString("url", IMAGE_URL); 源代码网推荐 225 rssWriter.WriteString(" "); 源代码网推荐 226 rssWriter.WriteElementString("title", IMAGE_TITLE); 源代码网推荐 227 rssWriter.WriteString(" "); 源代码网推荐 228 rssWriter.WriteElementString("link", IMAGE_LINK); 源代码网推荐 229 rssWriter.WriteString(" "); 源代码网推荐 230 rssWriter.WriteEndElement(); 源代码网推荐 231 rssWriter.WriteString(" "); 源代码网推荐 232 } 源代码网推荐 233 源代码网推荐 234 /**//// <summary> 源代码网推荐 235 /// Write in items 源代码网推荐 236 /// </summary> 源代码网推荐 237 private void WriteItem(ItemInfo item) 源代码网推荐 238 { 源代码网推荐 239 // Write in item block 源代码网推荐 240 rssWriter.WriteStartElement("item"); 源代码网推荐 241 rssWriter.WriteString(" "); 源代码网推荐 242 rssWriter.WriteElementString("title", item.ItemTitle); 源代码网推荐 243 rssWriter.WriteString(" "); 源代码网推荐 244 rssWriter.WriteElementString("link", item.ItemLink); 源代码网推荐 245 rssWriter.WriteString(" "); 源代码网推荐 246 源代码网推荐 247 rssWriter.WriteStartElement("description"); 源代码网推荐 248 rssWriter.WriteString(" "); 源代码网推荐 249 rssWriter.WriteCData(item.ItemDescription); 源代码网推荐 250 rssWriter.WriteString(" "); 源代码网推荐 251 rssWriter.WriteEndElement(); 源代码网推荐 252 源代码网推荐 253 rssWriter.WriteString(" "); 源代码网推荐 254 rssWriter.WriteElementString("pubDate", item.ItemPubDate); 源代码网推荐 255 rssWriter.WriteString(" "); 源代码网推荐 256 rssWriter.WriteElementString("dc:date.Taken", item.ItemDateTaken); 源代码网推荐 257 rssWriter.WriteString(" "); 源代码网推荐 258 rssWriter.WriteElementString("author", item.ItemAuthor); 源代码网推荐 259 rssWriter.WriteString(" "); 源代码网推荐 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 /**//// <summary> 源代码网推荐 271 /// Write in item media 源代码网推荐 272 /// </summary> 源代码网推荐 273 /// <param name="item">ItemInfo item</param> 源代码网推荐 274 private void WriteItemMedia(ItemInfo item) 源代码网推荐 275 { 源代码网推荐 276 // Write in media 源代码网推荐 277 rssWriter.WriteString(" "); 源代码网推荐 278 rssWriter.WriteStartElement("media:content"); 源代码网推荐 279 rssWriter.WriteAttributeString("url", item.MediaContentUrl); 源代码网推荐 280 rssWriter.WriteAttributeString("type", "image/jpeg"); 源代码网推荐 281 rssWriter.WriteEndElement(); 源代码网推荐 282 rssWriter.WriteString(" "); 源代码网推荐 283 rssWriter.WriteElementString("media:title", item.MediaTitle); 源代码网推荐 284 rssWriter.WriteString(" "); 源代码网推荐 285 rssWriter.WriteStartElement("media:text"); 源代码网推荐 286 rssWriter.WriteAttributeString("type", "html"); 源代码网推荐 287 rssWriter.WriteString(item.MediaDescription); 源代码网推荐 288 rssWriter.WriteEndElement(); 源代码网推荐 289 rssWriter.WriteString(" "); 源代码网推荐 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(" "); 源代码网推荐 296 rssWriter.WriteStartElement("media:credit"); 源代码网推荐 297 rssWriter.WriteAttributeString("role", "photographer"); 源代码网推荐 298 rssWriter.WriteString(item.MediaAuthor); 源代码网推荐 299 rssWriter.WriteEndElement(); 源代码网推荐 300 rssWriter.WriteString(" "); 源代码网推荐 301 源代码网推荐 302 } 源代码网推荐 303 源代码网推荐 304 /**//// <summary> 源代码网推荐 305 /// Close item element 源代码网推荐 306 /// </summary> 源代码网推荐 307 private void WriteItemEnd() 源代码网推荐 308 { 源代码网推荐 309 rssWriter.WriteString(" "); 源代码网推荐 310 rssWriter.WriteEndElement(); 源代码网推荐 311 rssWriter.WriteString(" "); 源代码网推荐 312 } 源代码网推荐 313 源代码网推荐 314 /**//// <summary> 源代码网推荐 315 /// Close all the elements 源代码网推荐 316 /// </summary> 源代码网推荐 317 private void WriteEnd() 源代码网推荐 318 { 源代码网推荐 319 rssWriter.WriteEndElement(); 源代码网推荐 320 rssWriter.WriteString(" "); 源代码网推荐 321 rssWriter.WriteEndElement(); 源代码网推荐 322 rssWriter.WriteEndDocument(); 源代码网推荐 323 } 源代码网推荐 324 源代码网推荐 325 #endregion 源代码网推荐 326 源代码网推荐 327 /**//// <summary> 源代码网推荐 328 /// Write RSS feed 源代码网推荐 329 /// </summary> 源代码网推荐 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类中的方法和属性。代码如下。(该文件有改动,如要编译,需做相关修改) 源代码网推荐 源代码网推荐 1using System.Collections.Generic; 源代码网推荐 2using System.Configuration; 源代码网推荐 3using System.Data; 源代码网推荐 4using System.Text; 源代码网推荐 5using System.Web; 源代码网推荐 6using System.Web.UI; 源代码网推荐 7using System.Xml; 源代码网推荐 8 源代码网推荐 9 源代码网推荐 10public class FeedBase : Page 源代码网推荐 11{ 源代码网推荐 12 public void GenerateRss() 源代码网推荐 13 { 源代码网推荐 14 源代码网推荐 15 IList<RssBase.ItemInfo> items = new List<RssBase.ItemInfo>(); 源代码网推荐 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} 源代码网推荐 41 源代码网推荐 42 源代码网推荐 最后,只要新建一个feed.aspx文件,继承FeedBase类,调用该类中的GenerateRss()方法就可以轻松生成你所期望的RSS Feed :) 源代码网推荐 有什么建议和想法,请留言! 源代码网推荐 源代码网推荐 http://www.cnblogs.com/jerryhu/archive/2006/08/30/490544.html 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
