程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET生成RSS Feed

ASP.NET生成RSS Feed

編輯:關於ASP.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<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 = "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<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}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved