亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET 生成 RSS Feed

2019-11-18 17:02:00
字體:
來源:轉載
供稿:網友

前段時間在寫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<ItemInfo> 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 = "153        private const string XMLNS_DC = "154        private const string LINK = "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 = "
160        private const string IMAGE_TITLE = "MyWii";
161        private const string IMAGE_LINK = "
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<ItemInfo> 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<ItemInfo> 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        /**//// <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("/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        /**//// <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("/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        /**//// <summary>
305        /// Close item element
306        /// </summary>
307        private void WriteItemEnd()
308        {
309            rssWriter.WriteString("/n     ");
310            rssWriter.WriteEndElement();
311            rssWriter.WriteString("/n     ");
312        }
313
314        /**//// <summary>
315        /// Close all the elements
316        /// </summary>
317        private void WriteEnd()
318        {
319            rssWriter.WriteEndElement();
320            rssWriter.WriteString("/n");
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.49028c.com/jerryhu/archive/2006/08/30/490544.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩大陆欧美高清视频区| 欧美日韩国产在线播放| 国产成人精品电影久久久| 亚洲国产成人久久| 草民午夜欧美限制a级福利片| 91精品视频免费看| 国产精品久久久久久久久久久久久久| 国产精品免费在线免费| 久久久久久com| 一区二区三区黄色| 国产精品一区二区三区久久| 欧美在线视频网站| 亚洲精品98久久久久久中文字幕| 欧美重口另类videos人妖| 国产黑人绿帽在线第一区| 日韩一区二区av| 日韩中文字幕在线视频播放| 久久久噜噜噜久久中文字免| 久久人人爽国产| 成人免费观看49www在线观看| 久久久久久亚洲| 成人福利免费观看| 国产婷婷97碰碰久久人人蜜臀| 正在播放欧美视频| 精品久久久久久亚洲精品| 欧美激情精品久久久久久变态| 亚洲品质视频自拍网| 欧美亚洲另类激情另类| 粉嫩av一区二区三区免费野| 久久精品国产一区| 98精品国产自产在线观看| 久久精品视频在线观看| 欧美三级欧美成人高清www| 国产精品久久中文| 日韩欧美在线免费| 日韩二区三区在线| 热re91久久精品国99热蜜臀| 久久久亚洲影院你懂的| 高清一区二区三区日本久| 国产精品一区二区三区在线播放| 亚洲午夜未满十八勿入免费观看全集| 日韩欧美大尺度| 九九久久国产精品| 亚洲高清av在线| 久久久国产精品亚洲一区| 久久九九全国免费精品观看| 国产精品成av人在线视午夜片| 国产精品视频久久久| 亚洲精品电影在线观看| 亚洲人成网站999久久久综合| 亚洲福利视频在线| 欧美日韩在线视频一区二区| 国产精品久久精品| 国产精品美女免费| 国产美女被下药99| 亚洲电影免费观看高清完整版在线| 国产成人精彩在线视频九色| 日韩成人中文字幕在线观看| 国产欧美精品在线| 国产一区二区日韩| 亚洲视频网站在线观看| 亚洲精品国产品国语在线| 亚洲综合大片69999| 狠狠干狠狠久久| 亚洲一区制服诱惑| 欧美性69xxxx肥| 18性欧美xxxⅹ性满足| 午夜美女久久久久爽久久| 精品呦交小u女在线| 中文字幕亚洲第一| 国外成人免费在线播放| 久久久久久久国产精品| 日韩精品免费一线在线观看| 国产午夜精品视频免费不卡69堂| 91国内免费在线视频| 日韩在线视频二区| 成人免费视频xnxx.com| 一区三区二区视频| 最新的欧美黄色| 欧美视频在线视频| 国产精品免费一区豆花| 成人中文字幕在线观看| 国产成人在线一区二区| 国产97色在线|日韩| 91国产一区在线| 欧美激情精品久久久久久久变态| 不卡av在线播放| 91久久久久久久久久| 日韩精品中文字幕在线观看| 日韩欧美精品网站| 国产亚洲福利一区| 国产丝袜精品第一页| 中文字幕日韩综合av| 日韩av在线电影网| 欧美黑人巨大精品一区二区| 亚洲香蕉成人av网站在线观看| 日本一区二区不卡| 日韩成人激情视频| 精品国产一区二区三区久久久| 日韩免费在线免费观看| 国产精品第一视频| 国产日韩欧美在线看| 欧美激情高清视频| 97在线视频观看| 欧美一级片在线播放| 久久99精品国产99久久6尤物| 久久久在线视频| 黑人巨大精品欧美一区二区免费| 日韩国产激情在线| 欧美日韩一区二区在线| 国产精品人成电影| 亚洲午夜国产成人av电影男同| 国产精品电影在线观看| 5252色成人免费视频| 成人免费大片黄在线播放| 欧美日韩国产二区| 久久91亚洲精品中文字幕奶水| y97精品国产97久久久久久| 欧美激情一区二区三区在线视频观看| 亚洲国产古装精品网站| 国产成人精品亚洲精品| 性欧美长视频免费观看不卡| 国产一区二区三区中文| 日本高清+成人网在线观看| 国产精品在线看| 久久精品99久久久久久久久| 国产成人拍精品视频午夜网站| 热久久免费视频精品| 久久久久99精品久久久久| 欧美性猛交xxxx免费看漫画| 日韩av男人的天堂| 欧美激情视频网址| 久久精品国产亚洲精品2020| 欧美日韩电影在线观看| 亚洲第一福利在线观看| 色99之美女主播在线视频| 91精品视频大全| 日本一区二区三区在线播放| 97视频色精品| 国产精品日韩av| 国产精品视频成人| 日韩欧美aⅴ综合网站发布| 日韩一区二区久久久| 日韩精品中文字幕久久臀| 最新国产精品亚洲| 91香蕉亚洲精品| 17婷婷久久www| 国产成人精品久久久| 久久精品2019中文字幕| 91精品91久久久久久| 国产69精品久久久| 久久亚洲私人国产精品va| 欧美精品一二区| 国产专区精品视频| 色中色综合影院手机版在线观看| 操人视频在线观看欧美| 欧美激情欧美激情| 日本高清+成人网在线观看| 亚洲免费av电影| 欧美极品美女视频网站在线观看免费| 中文字幕亚洲欧美一区二区三区| 久久久精品电影| 精品无人区太爽高潮在线播放| 激情成人在线视频|