كنت أكتب موجز RSS منذ بعض الوقت.
بعد عدة تعديلات، تمت كتابة الكود ذي الصلة في فئة منفصلة.
إنه شعور مريح جدًا لإعادة الاستخدام. لذلك قمت بنشرها وتركت الجميع يدرسونها معًا.
ما يلي هو فئة RssBase.cs:
1استخدام النظام؛
2باستخدام System.Collections.Generic;
3باستخدام System.Xml؛
4
5مساحة الاسم MyMedia.Utilities
6 {
7 فئة عامة RssBase
8 {
9 منشئ RssBase # المنطقة منشئ RssBase
10 RssBase العامة (XmlTextWriter rssWriter)
11 {
12 this.rssWriter = rssWriter;
13}
14 RssBase عامة (XmlTextWriter rssWriter، bool hasMedia، IList<ItemInfo> items)
15 {
16 this.rssWriter = rssWriter;
17 this.hasMedia = hasMedia;
18 this.items = items;
19}
20 #المنطقة
واحد وعشرون
22 [قابل للتسلسل]
23 فئة مختومة عامة معلومات العنصر
أربعة وعشرون {
25 مُنشئ ItemInfo # المنطقة مُنشئ ItemInfo
26 معلومات العنصر العامة () { }
27 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 ItemInfo العامة (string itemTitle، string itemLink، string itemDescription، string itemPubDate، string itemAuthor،
37 سلسلة itemGuid، سلسلة mediaContentUrl، سلسلة mediaTitle، سلسلة mediaDescription،
38 سلسلة mediaThumbUrl، سلسلة mediaThumbWidth، سلسلة mediaThumbHeight، سلسلة 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 #المنطقة
55
56 متغيرات المادة الداخلية#المنطقة متغيرات المادة الداخلية
57 // متغيرات العنصر
58 عنوان سلسلة خاصة؛
59 رابط عنصر سلسلة خاصة؛
60 وصفًا لسلسلة خاصة؛
61 سلسلة خاصة itemPubDate = DateTime.Now.ToString("r");
62 سلسلة خاصة itemDateTaken = DateTime.Now.ToString();
63 كاتب سلسلة خاصة؛
64 itemGuid سلسلة خاصة؛
65 // متغيرات الوسائط
66 سلسلة خاصة mediaContentUrl؛
67 عنوان الوسائط الخاص بالسلسلة؛
68 وصف الوسائط الخاصة بسلسلة ؛
69 سلسلة خاصة mediaThumbUrl؛
70 سلسلة خاصة من الوسائط عرض الإبهام؛
71 سلسلة خاصة mediaThumbHeight;
72 مؤلف وسائط سلسلة خاصة؛
73 #المنطقة
74
75 خصائص العنصر # خصائص العنصر المنطقة
76 سلسلة عامة ItemTitle
77 {
78 مجموعة { itemTitle = value }
79 الحصول على { عنوان العنصر العودة }
80}
81 سلسلة عامة ItemLink
82 {
83 مجموعة { itemLink = القيمة }
84 احصل على {رابط إرجاع العنصر}؛
85}
86 سلسلة عامة وصف السلعة
87 {
88 مجموعة { وصف العنصر = القيمة }
89 الحصول على { وصف السلعة المرتجعة }
90}
91 سلسلة عامة ItemPubDate
92 {
93 مجموعة { itemPubDate = القيمة }
94 احصل على {return itemPubDate}
95 }
96 سلسلة عامة ItemDateTaken
97 {
98 مجموعة { itemDateTaken = القيمة }
99 احصل على {return itemDateTaken};
100}
101 سلسلة عامة كاتب العنصر
102 {
103 مجموعة { itemAuthor = القيمة }
104 احصل على {return itemAuthor}
105 }
106 سلسلة عامة ItemGuid
107 {
108 مجموعة { itemGuid = القيمة }
109 احصل على {return itemGuid}؛
110 }
111 سلسلة عامة MediaContentUrl
112 {
113 مجموعة { mediaContentUrl = القيمة }
114 احصل على {return mediaContentUrl؛
115 }
116 سلسلة عامة MediaTitle
117 {
118 مجموعة { عنوان الوسائط = القيمة }
119 الحصول على { إرجاع عنوان الوسائط }
120 }
121 سلسلة عامة وصف الوسائط
122 {
123 مجموعة { mediaDescription = القيمة }
124 الحصول على { إرجاع وصف الوسائط }
125 }
126 سلسلة عامة MediaThumbUrl
127 {
128 مجموعة { mediaThumbUrl = القيمة }
129 احصل على {return mediaThumbUrl}
130 }
131 سلسلة عامة MediaThumbWidth
132 {
133 مجموعة { mediaThumbWidth = القيمة }
134 احصل على {return mediaThumbWidth}
135 }
136 سلسلة عامة MediaThumbHeight
137 {
138 مجموعة { mediaThumbHeight = القيمة }
139 احصل على {return mediaThumbHeight}؛
140 }
141 سلسلة عامة MediaAuthor
142 {
143 مجموعة { mediaAuthor = القيمة }
144 احصل على {return mediaAuthor}
145 }
146 #المنطقة
147
148 }
149
150 سلسلة كونست # سلسلة كونست المنطقة
151 سلسلة ثابتة خاصة TITLE = "MyMedia RSS";
152 سلسلة ثابتة خاصة XMLNS_MEDIA = " http://www.MyWii.com.au "؛
153 سلسلة ثابتة خاصة XMLNS_DC = " http://purl.org/dc/elements/1.1/ "؛
154 سلسلة ثابتة خاصة LINK = " http://www.MyWii.com.au/ "؛
155. سلسلة ثابتة خاصة DESCRIPTION = "description";
156 سلسلة ثابتة خاصة LANGUAGE = "en-us";
157 سلسلة const الخاصة COPYRIGHT = "حقوق الطبع والنشر 2006";
158 سلسلة ثابتة خاصة GENERATOR = "MyMedia RSS Generator";
159 سلسلة ثابتة خاصة IMAGE_URL = " 160 سلسلة ثابتة خاصة IMAGE_TITLE = "MyWii";
161 سلسلة ثابتة خاصة IMAGE_LINK = " http://www.MyWii.com.au "؛
162 سلسلة خاصة PUB_DATE = DateTime.Now.ToString("r");
163 سلسلة خاصة LAST_BUILD_DATE = DateTime.Now.ToString("r");
164
165 #المنطقة
166
167 متغيرات الأعضاء الداخلية # المنطقة متغيرات الأعضاء الداخلية
168 خاص XmlTextWriter rssWriter;
169 منطقيًا خاصًا يحتوي على الوسائط؛
170 عنصرًا خاصًا في قائمة Ilist<ItemInfo>؛
171 #المنطقة
172
173 خصائص#خصائص المنطقة
174 XmlTextWriter العام RssWriter
175 {
176 مجموعة { rssWriter = القيمة }
177 الحصول على { عودة آر إس إس }
178 }
179 المنطق العام HasMedia
180 {
181 مجموعة { hasMedia = value }
182 الحصول على { عودة وسائل الإعلام }
183}
184 عنصر Ilist<ItemInfo> عام
185 {
186 مجموعة { العناصر = القيمة }
187 الحصول على { إرجاع العناصر }
188 }
189
190 #المنطقة
191
192 طريقة خاصة#منطقة طريقة خاصة
193
194 كتابة Prologue باطلة خاصة ()
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 // اكتب في كتلة القناة
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 // اكتب في كتلة الصورة
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 /**//// <الملخص>
235 /// اكتب في العناصر
236 /// </summary>
237 WriteItem باطل خاص (عنصر معلومات العنصر)
238 {
239 // اكتب في كتلة العنصر
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("الوصف");
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 // اكتب وسائط العنصر هنا
267
268 }
269
270 /**//// <الملخص>
271 /// اكتب في وسائط العنصر
272 /// </summary>
273 /// <param name="item">عنصر معلومات العنصر</param>
274 WriteItemMedia باطل خاص (عنصر معلومات العنصر)
275 {
276 // اكتب في الوسائط
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 /**//// <الملخص>
305 /// إغلاق عنصر العنصر
306 /// </summary>
307 WriteItemEnd () باطل خاص
308 {
309 rssWriter.WriteString("n ");
310 rssWriter.WriteEndElement();
311 rssWriter.WriteString("n ");
312 }
313
314 /**//// <الملخص>
315 /// أغلق جميع العناصر
316 /// </summary>
317 نهاية الكتابة الفارغة الخاصة ()
318 {
319 rssWriter.WriteEndElement();
320 rssWriter.WriteString("n");
321 rssWriter.WriteEndElement();
322 rssWriter.WriteEndDocument();
323 }
324
325 #المنطقة
326
327 /**//// <الملخص>
328 /// اكتب تغذية RSS
329 /// </summary>
330 WriteRSS الفراغ العام ()
331 {
332 كتابة مقدمة();
333 foreach (معلومات معلومات العنصر في العناصر)
334 {
335 كتابة عنصر(معلومات);
336 إذا (يحتوي وسائل الإعلام)
337 رايتيتيمميديا(معلومات);
338 ريايتيمند();
339 }
340 رايت إند();
341 }
342 }
343}
ثم استخدم فئة FeedBase.cs لاستدعاء الأساليب والخصائص الموجودة في فئة RssBase أعلاه. الرمز هو كما يلي. (تم تغيير هذا الملف. إذا كنت ترغب في تجميعه، فأنت بحاجة إلى إجراء التعديلات ذات الصلة) 1
باستخدام System.Collections.Generic؛
2 باستخدام System.Configuration؛
3 باستخدام System.Data؛
4 باستخدام System.Text؛
5باستخدام System.Web؛
6باستخدام System.Web.UI؛
7باستخدام System.Xml؛
8
9
10 قاعدة تغذية للفئة العامة: الصفحة
11 {
12 الفراغ العام GenerateRss ()
13 {
14
15 IList<RssBase.ItemInfo> items = new List<RssBase.ItemInfo>();
16
17 // تعبئة العناصر.
18 foreach (صف DataRow في الصفوف)
19 {
20 RssBase.ItemInfo item = new RssBase.ItemInfo(row["Title"].ToString(), "link),row["Description"].ToString(),row["PubDate"].ToString(),row[ "المؤلف"].ToString(), "المرشد");
21 عنصرًا. أضف (عنصرًا)؛
إثنان وعشرون }
ثلاثة وعشرين
24 XmlTextWriter xmlWriter = جديد XmlTextWriter(Response.OutputStream,
25 ترميز.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 استجابة. نهاية ()؛
38 }
39
40}
41
42
أخيرًا، ما عليك سوى إنشاء ملف Feed.aspx جديد، وورث فئة FeedBase، واستدعاء الأسلوب GenerateRss() في هذه الفئة لإنشاء موجز RSS الذي تريده بسهولة :)
إذا كان لديك أي اقتراحات أو أفكار، يرجى ترك رسالة!
http://www.cnblogs.com/jerryhu/archive/2006/08/30/490544.html