前段时间在写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 }
()。








