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


1
 using System;
using System;2
 using System.Collections.Generic;
using System.Collections.Generic;3
 using System.Xml;
using System.Xml;4

5
 namespace MyMedia.Utilities
namespace MyMedia.Utilities6


 {
{7
 public class RssBase
    public class RssBase8

 
     {
{9

 RssBase constructor#region RssBase constructor
        RssBase constructor#region RssBase constructor10
 public RssBase(XmlTextWriter rssWriter)
        public RssBase(XmlTextWriter rssWriter)11

 
         {
{12
 this.rssWriter = rssWriter;
            this.rssWriter = rssWriter;13
 }
        }14
 public RssBase(XmlTextWriter rssWriter, bool hasMedia, IList<ItemInfo> items)
        public RssBase(XmlTextWriter rssWriter, bool hasMedia, IList<ItemInfo> items)15

 
         {
{16
 this.rssWriter = rssWriter;
            this.rssWriter = rssWriter;17
 this.hasMedia = hasMedia;
            this.hasMedia = hasMedia;18
 this.items = items;
            this.items = items;19
 }
        }20
 #endregion
        #endregion21

22
 [Serializable]
        [Serializable]23
 public sealed class ItemInfo
        public sealed class ItemInfo24

 
         {
{25

 ItemInfo constructor#region ItemInfo constructor
            ItemInfo constructor#region ItemInfo constructor26

 public ItemInfo()
            public ItemInfo()  { }
{ }27
 public ItemInfo(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor, string itemGuid)
            public ItemInfo(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor, string itemGuid)28

 
             {
{29
 this.itemTitle = itemTitle;
                this.itemTitle = itemTitle;30
 this.itemLink = itemLink;
                this.itemLink = itemLink;31
 this.itemDescription = itemDescription;
                this.itemDescription = itemDescription;32
 this.itemAuthor = itemAuthor;
                this.itemAuthor = itemAuthor;33
 this.itemGuid = itemGuid;
                this.itemGuid = itemGuid;34
 this.itemPubDate = itemPubDate;
                this.itemPubDate = itemPubDate;35
 }
            }36
 public ItemInfo(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor,
            public ItemInfo(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor,37
 string itemGuid, string mediaContentUrl, string mediaTitle, string mediaDescription,
                            string itemGuid, string mediaContentUrl, string mediaTitle, string mediaDescription,38
 string mediaThumbUrl, string mediaThumbWidth, string mediaThumbHeight, string mediaAuthor)
                            string mediaThumbUrl, string mediaThumbWidth, string mediaThumbHeight, string mediaAuthor)39

 
             {
{40
 this.itemTitle = itemTitle;
                this.itemTitle = itemTitle;41
 this.itemLink = itemLink;
                this.itemLink = itemLink;42
 this.itemDescription = itemDescription;
                this.itemDescription = itemDescription;43
 this.itemPubDate = itemPubDate;
                this.itemPubDate = itemPubDate;44
 this.itemAuthor = itemAuthor;
                this.itemAuthor = itemAuthor;45
 this.itemGuid = itemGuid;
                this.itemGuid = itemGuid;46
 this.mediaContentUrl = mediaContentUrl;
                this.mediaContentUrl = mediaContentUrl;47
 this.mediaTitle = mediaTitle;
                this.mediaTitle = mediaTitle;48
 this.mediaDescription = mediaDescription;
                this.mediaDescription = mediaDescription;49
 this.mediaThumbUrl = mediaThumbUrl;
                this.mediaThumbUrl = mediaThumbUrl;50
 this.mediaThumbWidth = mediaThumbWidth;
                this.mediaThumbWidth = mediaThumbWidth;51
 this.mediaThumbHeight = mediaThumbHeight;
                this.mediaThumbHeight = mediaThumbHeight;52
 this.mediaAuthor = mediaAuthor;
                this.mediaAuthor = mediaAuthor;53
 }
            }54
 #endregion
            #endregion55

56

 Internal item variables#region Internal item variables
            Internal item variables#region Internal item variables57
 // Item variables
            // Item variables58
 private string itemTitle;
            private string itemTitle;59
 private string itemLink;
            private string itemLink;60
 private string itemDescription;
            private string itemDescription;61
 private string itemPubDate = DateTime.Now.ToString("r");
            private string itemPubDate = DateTime.Now.ToString("r");62
 private string itemDateTaken = DateTime.Now.ToString();
            private string itemDateTaken = DateTime.Now.ToString();63
 private string itemAuthor;
            private string itemAuthor;64
 private string itemGuid;
            private string itemGuid;65
 // Media variables
            // Media variables66
 private string mediaContentUrl;
            private string mediaContentUrl;67
 private string mediaTitle;
            private string mediaTitle;68
 private string mediaDescription;
            private string mediaDescription;69
 private string mediaThumbUrl;
            private string mediaThumbUrl;70
 private string mediaThumbWidth;
            private string mediaThumbWidth;71
 private string mediaThumbHeight;
            private string mediaThumbHeight;72
 private string mediaAuthor;
            private string mediaAuthor;73
 #endregion
            #endregion74

75

 Item properties#region Item properties
            Item properties#region Item properties76
 public string ItemTitle
            public string ItemTitle77

 
             {
{78

 set
                set  { itemTitle = value; }
{ itemTitle = value; }79

 get
                get  { return itemTitle; }
{ return itemTitle; }80
 }
            }81
 public string ItemLink
            public string ItemLink82

 
             {
{83

 set
                set  { itemLink = value; }
{ itemLink = value; }84

 get
                get  { return itemLink; }
{ return itemLink; }85
 }
            }86
 public string ItemDescription
            public string ItemDescription87

 
             {
{88

 set
                set  { itemDescription = value; }
{ itemDescription = value; }89

 get
                get  { return itemDescription; }
{ return itemDescription; }90
 }
            }91
 public string ItemPubDate
            public string ItemPubDate92

 
             {
{93

 set
                set  { itemPubDate = value; }
{ itemPubDate = value; }94

 get
                get  { return itemPubDate; }
{ return itemPubDate; }95
 }
            }96
 public string ItemDateTaken
            public string ItemDateTaken97

 
             {
{98

 set
                set  { itemDateTaken = value; }
{ itemDateTaken = value; }99

 get
                get  { return itemDateTaken; }
{ return itemDateTaken; }100
 }
            }101
 public string ItemAuthor
            public string ItemAuthor102

 
             {
{103

 set
                set  { itemAuthor = value; }
{ itemAuthor = value; }104

 get
                get  { return itemAuthor; }
{ return itemAuthor; }105
 }
            }106
 public string ItemGuid
            public string ItemGuid107

 
             {
{108

 set
                set  { itemGuid = value; }
{ itemGuid = value; }109

 get
                get  { return itemGuid; }
{ return itemGuid; }110
 }
            }111
 public string MediaContentUrl
            public string MediaContentUrl112

 
             {
{113

 set
                set  { mediaContentUrl = value; }
{ mediaContentUrl = value; }114

 get
                get  { return mediaContentUrl; }
{ return mediaContentUrl; }115
 }
            }116
 public string MediaTitle
            public string MediaTitle117

 
             {
{118

 set
                set  { mediaTitle = value; }
{ mediaTitle = value; }119

 get
                get  { return mediaTitle; }
{ return mediaTitle; }120
 }
            }121
 public string MediaDescription
            public string MediaDescription122

 
             {
{123

 set
                set  { mediaDescription = value; }
{ mediaDescription = value; }124

 get
                get  { return mediaDescription; }
{ return mediaDescription; }125
 }
            }126
 public string MediaThumbUrl
            public string MediaThumbUrl127

 
             {
{128

 set
                set  { mediaThumbUrl = value; }
{ mediaThumbUrl = value; }129

 get
                get  { return mediaThumbUrl; }
{ return mediaThumbUrl; }130
 }
            }131
 public string MediaThumbWidth
            public string MediaThumbWidth132

 
             {
{133

 set
                set  { mediaThumbWidth = value; }
{ mediaThumbWidth = value; }134

 get
                get  { return mediaThumbWidth; }
{ return mediaThumbWidth; }135
 }
            }136
 public string MediaThumbHeight
            public string MediaThumbHeight137

 
             {
{138

 set
                set  { mediaThumbHeight = value; }
{ mediaThumbHeight = value; }139

 get
                get  { return mediaThumbHeight; }
{ return mediaThumbHeight; }140
 }
            }141
 public string MediaAuthor
            public string MediaAuthor142

 
             {
{143

 set
                set  { mediaAuthor = value; }
{ mediaAuthor = value; }144

 get
                get  { return mediaAuthor; }
{ return mediaAuthor; }145
 }
            }146
 #endregion
            #endregion147

148
 }
        }149

150

 Const string#region Const string
        Const string#region Const string151
 private const string TITLE = "MyMedia RSS";
        private const string TITLE = "MyMedia RSS";152
 private const string XMLNS_MEDIA = "http://www.MyWii.com.au";
        private const string XMLNS_MEDIA = "http://www.MyWii.com.au";153
 private const string XMLNS_DC = "http://purl.org/dc/elements/1.1/";
        private const string XMLNS_DC = "http://purl.org/dc/elements/1.1/";154
 private const string LINK = "http://www.MyWii.com.au/";
        private const string LINK = "http://www.MyWii.com.au/";155
 private const string DESCRIPTION = "description";
        private const string DESCRIPTION = "description";156
 private const string LANGUAGE = "en-us";
        private const string LANGUAGE = "en-us";157
 private const string COPYRIGHT = "Copyright 2006";
        private const string COPYRIGHT = "Copyright 2006";158
 private const string GENERATOR = "MyMedia RSS Generator";
        private const string GENERATOR = "MyMedia RSS Generator";159
 private const string IMAGE_URL = "http://www.MyWii.com.au/img/main/feed.gif";
        private const string IMAGE_URL = "http://www.MyWii.com.au/img/main/feed.gif";160
 private const string IMAGE_TITLE = "MyWii";
        private const string IMAGE_TITLE = "MyWii";161
 private const string IMAGE_LINK = "http://www.MyWii.com.au";
        private const string IMAGE_LINK = "http://www.MyWii.com.au";162
 private string PUB_DATE = DateTime.Now.ToString("r");
        private string PUB_DATE = DateTime.Now.ToString("r");163
 private string LAST_BUILD_DATE = DateTime.Now.ToString("r");
        private string LAST_BUILD_DATE = DateTime.Now.ToString("r");164

165
 #endregion
        #endregion166

167

 Internal member variables#region Internal member variables
        Internal member variables#region Internal member variables168
 private XmlTextWriter rssWriter;
        private XmlTextWriter rssWriter;169
 private bool hasMedia;
        private bool hasMedia;170
 private IList<ItemInfo> items;
        private IList<ItemInfo> items;171
 #endregion
        #endregion172

173

 Properties#region Properties
        Properties#region Properties174
 public XmlTextWriter RssWriter
        public XmlTextWriter RssWriter175

 
         {
{176

 set
            set  { rssWriter = value; }
{ rssWriter = value; }177

 get
            get  { return rssWriter; }
{ return rssWriter; }178
 }
        }179
 public bool HasMedia
        public bool HasMedia180

 
         {
{181

 set
            set  { hasMedia = value; }
{ hasMedia = value; }182

 get
            get  { return hasMedia; }
{ return hasMedia; }183
 }
        }184
 public IList<ItemInfo> Items
        public IList<ItemInfo> Items185

 
         {
{186

 set
            set  { items = value; }
{ items = value; }187

 get
            get  { return items; }
{ return items; }188
 }
        }189

190
 #endregion
        #endregion191

192

 Private method#region Private method
        Private method#region Private method193

194
 private void WritePrologue()
        private void WritePrologue()195

 
         {
{196
 rssWriter.WriteStartDocument();
            rssWriter.WriteStartDocument();197
 rssWriter.WriteStartElement("rss");
            rssWriter.WriteStartElement("rss");198
 rssWriter.WriteAttributeString("version", "2.0");
            rssWriter.WriteAttributeString("version", "2.0");199
 rssWriter.WriteAttributeString("xmlns:media", XMLNS_MEDIA);
            rssWriter.WriteAttributeString("xmlns:media", XMLNS_MEDIA);200
 rssWriter.WriteAttributeString("xmlns:dc", XMLNS_DC);
            rssWriter.WriteAttributeString("xmlns:dc", XMLNS_DC);201
 rssWriter.WriteString("\n    ");
            rssWriter.WriteString("\n    ");202
 // Write in channel block
            // Write in channel block203
 rssWriter.WriteStartElement("channel");
            rssWriter.WriteStartElement("channel");204
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");205
 rssWriter.WriteElementString("title", TITLE);
            rssWriter.WriteElementString("title", TITLE);206
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");207
 rssWriter.WriteElementString("link", LINK);
            rssWriter.WriteElementString("link", LINK);208
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");209
 rssWriter.WriteElementString("description", DESCRIPTION);
            rssWriter.WriteElementString("description", DESCRIPTION);210
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");211
 rssWriter.WriteElementString("pubDate", PUB_DATE);
            rssWriter.WriteElementString("pubDate", PUB_DATE);212
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");213
 rssWriter.WriteElementString("lastBuildDate", LAST_BUILD_DATE);
            rssWriter.WriteElementString("lastBuildDate", LAST_BUILD_DATE);214
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");215
 rssWriter.WriteElementString("language", LANGUAGE);
            rssWriter.WriteElementString("language", LANGUAGE);216
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");217
 rssWriter.WriteElementString("copyright", COPYRIGHT);
            rssWriter.WriteElementString("copyright", COPYRIGHT);218
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");219
 rssWriter.WriteElementString("generator", GENERATOR);
            rssWriter.WriteElementString("generator", GENERATOR);220
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");221
 // Write in image block
            // Write in image block222
 rssWriter.WriteStartElement("image");
            rssWriter.WriteStartElement("image");223
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");224
 rssWriter.WriteElementString("url", IMAGE_URL);
            rssWriter.WriteElementString("url", IMAGE_URL);225
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");226
 rssWriter.WriteElementString("title", IMAGE_TITLE);
            rssWriter.WriteElementString("title", IMAGE_TITLE);227
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");228
 rssWriter.WriteElementString("link", IMAGE_LINK);
            rssWriter.WriteElementString("link", IMAGE_LINK);229
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");230
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();231
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");232
 }
        }233

234

 /**//// <summary>
        /**//// <summary>235
 /// Write in items
        /// Write in items236
 /// </summary>
        /// </summary>237
 private void WriteItem(ItemInfo item)
        private void WriteItem(ItemInfo item)238

 
         {
{239
 // Write in item block
            // Write in item block240
 rssWriter.WriteStartElement("item");
            rssWriter.WriteStartElement("item");241
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");242
 rssWriter.WriteElementString("title", item.ItemTitle);
            rssWriter.WriteElementString("title", item.ItemTitle);243
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");244
 rssWriter.WriteElementString("link", item.ItemLink);
            rssWriter.WriteElementString("link", item.ItemLink);245
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");246

247
 rssWriter.WriteStartElement("description");
            rssWriter.WriteStartElement("description");248
 rssWriter.WriteString("\n         ");
            rssWriter.WriteString("\n         ");249
 rssWriter.WriteCData(item.ItemDescription);
            rssWriter.WriteCData(item.ItemDescription);250
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");251
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();252

253
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");254
 rssWriter.WriteElementString("pubDate", item.ItemPubDate);
            rssWriter.WriteElementString("pubDate", item.ItemPubDate);255
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");256
 rssWriter.WriteElementString("dc:date.Taken", item.ItemDateTaken);
            rssWriter.WriteElementString("dc:date.Taken", item.ItemDateTaken);257
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");258
 rssWriter.WriteElementString("author", item.ItemAuthor);
            rssWriter.WriteElementString("author", item.ItemAuthor);259
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");260
 rssWriter.WriteStartElement("guid");
            rssWriter.WriteStartElement("guid");261
 rssWriter.WriteAttributeString("isPermaLink", "false");
            rssWriter.WriteAttributeString("isPermaLink", "false");262
 rssWriter.WriteString(item.ItemGuid);
            rssWriter.WriteString(item.ItemGuid);263
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();264

265

266
 // Write item media here
            // Write item media here267

268
 }
        }269

270

 /**//// <summary>
        /**//// <summary>271
 /// Write in item media
        /// Write in item media272
 /// </summary>
        /// </summary>273
 /// <param name="item">ItemInfo item</param>
        /// <param name="item">ItemInfo item</param>274
 private void WriteItemMedia(ItemInfo item)
        private void WriteItemMedia(ItemInfo item)275

 
         {
{276
 // Write in media
            // Write in media277
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");278
 rssWriter.WriteStartElement("media:content");
            rssWriter.WriteStartElement("media:content");279
 rssWriter.WriteAttributeString("url", item.MediaContentUrl);
            rssWriter.WriteAttributeString("url", item.MediaContentUrl);280
 rssWriter.WriteAttributeString("type", "image/jpeg");
            rssWriter.WriteAttributeString("type", "image/jpeg");281
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();282
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");283
 rssWriter.WriteElementString("media:title", item.MediaTitle);
            rssWriter.WriteElementString("media:title", item.MediaTitle);284
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");285
 rssWriter.WriteStartElement("media:text");
            rssWriter.WriteStartElement("media:text");286
 rssWriter.WriteAttributeString("type", "html");
            rssWriter.WriteAttributeString("type", "html");287
 rssWriter.WriteString(item.MediaDescription);
            rssWriter.WriteString(item.MediaDescription);288
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();289
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");290
 rssWriter.WriteStartElement("media:thumbnail");
            rssWriter.WriteStartElement("media:thumbnail");291
 rssWriter.WriteAttributeString("url", item.MediaThumbUrl);
            rssWriter.WriteAttributeString("url", item.MediaThumbUrl);292
 rssWriter.WriteAttributeString("height", item.MediaThumbHeight);
            rssWriter.WriteAttributeString("height", item.MediaThumbHeight);293
 rssWriter.WriteAttributeString("width", item.MediaThumbWidth);
            rssWriter.WriteAttributeString("width", item.MediaThumbWidth);294
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();295
 rssWriter.WriteString("\n        ");
            rssWriter.WriteString("\n        ");296
 rssWriter.WriteStartElement("media:credit");
            rssWriter.WriteStartElement("media:credit");297
 rssWriter.WriteAttributeString("role", "photographer");
            rssWriter.WriteAttributeString("role", "photographer");298
 rssWriter.WriteString(item.MediaAuthor);
            rssWriter.WriteString(item.MediaAuthor);299
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();300
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");301

302
 }
        }303

304

 /**//// <summary>
        /**//// <summary>305
 /// Close item element
        /// Close item element 306
 /// </summary>
        /// </summary>307
 private void WriteItemEnd()
        private void WriteItemEnd()308

 
         {
{309
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");310
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();311
 rssWriter.WriteString("\n     ");
            rssWriter.WriteString("\n     ");312
 }
        }313

314

 /**//// <summary>
        /**//// <summary>315
 /// Close all the elements
        /// Close all the elements316
 /// </summary>
        /// </summary>317
 private void WriteEnd()
        private void WriteEnd()318

 
         {
{319
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();320
 rssWriter.WriteString("\n");
            rssWriter.WriteString("\n");321
 rssWriter.WriteEndElement();
            rssWriter.WriteEndElement();322
 rssWriter.WriteEndDocument();
            rssWriter.WriteEndDocument();323
 }
        }324

325
 #endregion
        #endregion326

327

 /**//// <summary>
        /**//// <summary>328
 /// Write RSS feed
        /// Write RSS feed329
 /// </summary>
        /// </summary>330
 public void WriteRSS()
        public void WriteRSS()331

 
         {
{332
 WritePrologue();
            WritePrologue();333
 foreach (ItemInfo info in items)
            foreach (ItemInfo info in items)334

 
             {
{335
 WriteItem(info);
                WriteItem(info);336
 if (hasMedia)
                if (hasMedia)337
 WriteItemMedia(info);
                    WriteItemMedia(info);338
 WriteItemEnd();
                WriteItemEnd();339
 }
            }340
 WriteEnd();
            WriteEnd();341
 }
        }342
 }
    }343
 }
}然后使用一个FeedBase.cs类,调用上面的RssBase类中的方法和属性。代码如下。(该文件有改动,如要编译,需做相关修改)


1
 using System.Collections.Generic;
using System.Collections.Generic;2
 using System.Configuration;
using System.Configuration;3
 using System.Data;
using System.Data;4
 using System.Text;
using System.Text;5
 using System.Web;
using System.Web;6
 using System.Web.UI;
using System.Web.UI;7
 using System.Xml;
using System.Xml;8

9

10
 public class FeedBase : Page
public class FeedBase : Page11


 {
{12
 public void GenerateRss()
    public void GenerateRss()13

 
     {
{14

15
 IList<RssBase.ItemInfo> items = new List<RssBase.ItemInfo>();
        IList<RssBase.ItemInfo> items = new List<RssBase.ItemInfo>();16

17
 // Populate items.
        // Populate items. 18
 foreach (DataRow row in rows)
        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");
            RssBase.ItemInfo item = new RssBase.ItemInfo(row["Title"].ToString(), "link", row["Description"].ToString(), row["PubDate"].ToString(), row["Author"].ToString(), "guid");21
 items.Add(item);
            items.Add(item);22
 }
        }23

24
 XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream,
        XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream,25
 Encoding.UTF8);
            Encoding.UTF8);26

27
 RssBase rssBase = new RssBase(xmlWriter, false, items);
        RssBase rssBase = new RssBase(xmlWriter, false, items);28
 rssBase.WriteRSS();
        rssBase.WriteRSS();29

30
 xmlWriter.Flush();
        xmlWriter.Flush();31
 xmlWriter.Close();
        xmlWriter.Close();32

33
 Response.ContentEncoding = Encoding.UTF8;
        Response.ContentEncoding = Encoding.UTF8;34
 Response.ContentType = "text/xml";
        Response.ContentType = "text/xml";35
 Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetCacheability(HttpCacheability.Public);36

37
 Response.End();
        Response.End();38
 }
    }39

40
 }
}41

42

最后,只要新建一个feed.aspx文件,继承FeedBase类,调用该类中的GenerateRss()方法就可以轻松生成你所期望的RSS Feed :)
有什么建议和想法,请留言!
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号