Saya sedang menulis RSS feed beberapa waktu lalu.
Setelah beberapa modifikasi, kode yang relevan ditulis ke dalam kelas terpisah.
Rasanya cukup nyaman untuk digunakan kembali. Jadi saya mempostingnya dan membiarkan semua orang mempelajarinya bersama.
Berikut ini adalah kelas RssBase.cs:
1menggunakan Sistem;
2menggunakan System.Collections.Generic;
3menggunakan System.Xml;
4
5namespace MyMedia.Utilitas
6{
7 RssBase kelas publik
8 {
9 Konstruktor RssBase#konstruktor RssBase wilayah
10 RssBase publik (XmlTextWriter rssWriter)
11 {
12 ini.rssWriter = rssWriter;
13}
14 RssBase publik (XmlTextWriter rssWriter, bool hasMedia, IList<ItemInfo> item)
15 {
16 ini.rssWriter = rssWriter;
17 ini.hasMedia = hasMedia;
18 ini.item = item;
19}
20 #wilayah akhir
dua puluh satu
22 [Dapat diserialkan]
23 ItemInfo kelas tertutup publik
dua puluh empat {
25 Konstruktor ItemInfo#konstruktor ItemInfo wilayah
26 Info Barang publik() {} }
27 ItemInfo publik(string itemTitle, string itemLink, string itemDescription, string itemPubDate, string itemAuthor, string itemGuid)
28 {
29 this.itemTitle = judul item;
30 this.itemLink = itemLink;
31 this.itemDescription = deskripsi item;
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 = judul item;
41 this.itemLink = itemLink;
42 this.itemDescription = deskripsi item;
43 this.itemPubDate = itemPubDate;
44 this.itemAuthor = itemAuthor;
45 this.itemGuid = itemGuid;
46 ini.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 #wilayah akhir
55
56 Variabel item internal#wilayah Variabel item internal
57 // Variabel item
58 judul item string pribadi;
59 item string pribadi Tautan;
60 item string pribadiDeskripsi;
61 string pribadi itemPubDate = DateTime.Now.ToString("r");
62 string pribadi itemDateTaken = DateTime.Now.ToString();
63 string pribadi itemAuthor;
64 string pribadi itemGuid;
65 // Variabel media
66 string pribadi mediaContentUrl;
67 judul media string pribadi;
68 mediaDeskripsi string pribadi;
69 media string pribadiThumbUrl;
70 string pribadi mediaThumbWidth;
71 media string pribadiThumbHeight;
72 string pribadi mediaAuthor;
73 #wilayah akhir
74
75 Properti item#wilayah Properti item
76 Judul Item string publik
77 {
78 set { judul item = nilai }
79 dapatkan { kembalikan judul item }
80}
81 string publik ItemLink
82 {
83 set { itemLink = nilai }
84 dapatkan { return itemLink }
85}
86 Deskripsi Item string publik
87 {
88 set { itemDeskripsi = nilai }
89 dapatkan { pengembalian itemDeskripsi }
90}
91 string publik ItemPubDate
92 {
93 set { itemPubDate = nilai }
94 dapatkan { kembalikan itemPubDate }
95 }
96 string publik ItemDateTaken
97 {
98 set { itemDateTaken = nilai }
99 dapatkan { pengembalian itemDateTaken }
100}
101 string publik ItemAuthor
102 {
103 set { itemPenulis = nilai }
104 dapatkan { return itemAuthor }
105 }
106 string publik ItemGuid
107 {
108 set { itemGuid = nilai }
109 dapatkan { return itemGuid }
110 }
111 string publik MediaContentUrl
112 {
113 set { mediaContentUrl = nilai }
114 dapatkan { kembalikan mediaContentUrl ;
115 }
116 Judul Media string publik
117 {
118 set {judul media = nilai }
119 dapatkan { kembalikan Judul Media }
120 }
121 string publik MediaDescription
122 {
123 set { mediaDeskripsi = nilai }
124 dapatkan { return mediaDescription }
125 }
126 string publik MediaThumbUrl
127 {
128 set { mediaThumbUrl = nilai }
129 dapatkan { kembalikan mediaThumbUrl }
130 }
131 string publik MediaThumbWidth
132 {
133 set { mediaThumbWidth = nilai;
134 dapatkan { return mediaThumbWidth }
135 }
136 string publik MediaThumbHeight
137 {
138 set { mediaThumbHeight = nilai }
139 dapatkan { return mediaThumbHeight }
140 }
141 string publik MediaAuthor
142 {
143 set { mediaAuthor = nilai }
144 dapatkan { kembalikan mediaAuthor }
145 }
146 #wilayah akhir
147
148 }
149
150 String Const#wilayah String Const
151 string const pribadi TITLE = "MyMedia RSS";
152 string const pribadi XMLNS_MEDIA = " http://www.MyWii.com.au ";
153 string const pribadi XMLNS_DC = " http://purl.org/dc/elements/1.1/ ";
154 string const pribadi LINK = " http://www.MyWii.com.au/ ";
155 string const pribadi DESCRIPTION = "deskripsi";
156 string const pribadi LANGUAGE = "en-us";
157 private const string HAK CIPTA = "Hak Cipta 2006";
158 private const string GENERATOR = "Generator RSS MyMedia";
159 string const pribadi IMAGE_URL = " 160 string const pribadi IMAGE_TITLE = "MyWii";
161 string const pribadi IMAGE_LINK = " http://www.MyWii.com.au ";
162 string pribadi PUB_DATE = DateTime.Now.ToString("r");
163 string pribadi LAST_BUILD_DATE = DateTime.Now.ToString("r");
164
165 #wilayah akhir
166
167 Variabel anggota internal#wilayah Variabel anggota internal
168 XmlTextWriter rssWriter pribadi;
169 bool pribadi hasMedia;
170 item IList<ItemInfo> pribadi;
171 #wilayah akhir
172
173 Properti#Properti wilayah
174 XmlTextWriter publik RssWriter
175 {
176 set { rssWriter = nilai }
177 dapatkan { kembalikan rssWriter }
178 }
179 bolu publik HasMedia
180 {
181 set { hasMedia = nilai }
182 dapatkan { kembali hasMedia }
183}
184 IList<ItemInfo> Item publik
185 {
186 set { item = nilai }
187 dapatkan { pengembalian barang; }
188 }
189
190 #wilayah akhir
191
192 Metode pribadi#wilayah Metode pribadi
193
194 kekosongan pribadi WritePrologue()
195 {
196 rssWriter.WriteStartDocument();
197 rssWriter.WriteStartElement("rss");
198 rssWriter.WriteAttributeString("versi", "2.0");
199 rssWriter.WriteAttributeString("xmlns:media", XMLNS_MEDIA);
200 rssWriter.WriteAttributeString("xmlns:dc", XMLNS_DC);
201 rssWriter.WriteString("n ");
202 // Tulis di blok saluran
203 rssWriter.WriteStartElement("saluran");
204 rssWriter.WriteString("n ");
205 rssWriter.WriteElementString("judul", JUDUL);
206 rssWriter.WriteString("n ");
207 rssWriter.WriteElementString("tautan", LINK);
208 rssWriter.WriteString("n ");
209 rssWriter.WriteElementString("deskripsi", DESKRIPSI);
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("bahasa", BAHASA);
216 rssWriter.WriteString("n ");
217 rssWriter.WriteElementString("hak cipta", HAK CIPTA);
218 rssWriter.WriteString("n ");
219 rssWriter.WriteElementString("generator", GENERATOR);
220 rssWriter.WriteString("n ");
221 // Tulis di blok gambar
222 rssWriter.WriteStartElement("gambar");
223 rssWriter.WriteString("n ");
224 rssWriter.WriteElementString("url", IMAGE_URL);
225 rssWriter.WriteString("n ");
226 rssWriter.WriteElementString("judul", IMAGE_TITLE);
227 rssWriter.WriteString("n ");
228 rssWriter.WriteElementString("tautan", IMAGE_LINK);
229 rssWriter.WriteString("n ");
230 rssWriter.WriteEndElement();
231 rssWriter.WriteString("n ");
232 }
233
234 /**//// <ringkasan>
235 /// Tulis dalam item
236 /// </ringkasan>
237 kekosongan pribadi WriteItem(ItemInfo item)
238 {
239 // Tulis di blok item
240 rssWriter.WriteStartElement("item");
241 rssWriter.WriteString("n ");
242 rssWriter.WriteElementString("judul", item.ItemTitle);
243 rssWriter.WriteString("n ");
244 rssWriter.WriteElementString("link", item.ItemLink);
245 rssWriter.WriteString("n ");
246
247 rssWriter.WriteStartElement("deskripsi");
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:tanggal.Diambil", item.ItemDateTaken);
257 rssWriter.WriteString("n ");
258 rssWriter.WriteElementString("penulis", item.ItemAuthor);
259 rssWriter.WriteString("n ");
260 rssWriter.WriteStartElement("panduan");
261 rssWriter.WriteAttributeString("isPermaLink", "false");
262 rssWriter.WriteString(item.ItemGuid);
263 rssWriter.WriteEndElement();
264
265
266 // Tulis media item di sini
267
268 }
269
270 /**//// <ringkasan>
271 /// Tulis di media item
272 /// </ringkasan>
273 /// <param name="item">Info Itemitem</param>
274 kekosongan pribadi WriteItemMedia(ItemInfo item)
275 {
276 // Menulis di media
277 rssWriter.WriteString("n ");
278 rssWriter.WriteStartElement("media:konten");
279 rssWriter.WriteAttributeString("url", item.MediaContentUrl);
280 rssWriter.WriteAttributeString("ketik", "gambar/jpeg");
281 rssWriter.WriteEndElement();
282 rssWriter.WriteString("n ");
283 rssWriter.WriteElementString("media:judul", item.MediaTitle);
284 rssWriter.WriteString("n ");
285 rssWriter.WriteStartElement("media:teks");
286 rssWriter.WriteAttributeString("ketik", "html");
287 rssWriter.WriteString(item.MediaDescription);
288 rssWriter.WriteEndElement();
289 rssWriter.WriteString("n ");
290 rssWriter.WriteStartElement("media:gambar mini");
291 rssWriter.WriteAttributeString("url", item.MediaThumbUrl);
292 rssWriter.WriteAttributeString("tinggi", item.MediaThumbHeight);
293 rssWriter.WriteAttributeString("lebar", item.MediaThumbWidth);
294 rssWriter.WriteEndElement();
295 rssWriter.WriteString("n ");
296 rssWriter.WriteStartElement("media:kredit");
297 rssWriter.WriteAttributeString("peran", "fotografer");
298 rssWriter.WriteString(item.MediaAuthor);
299 rssWriter.WriteEndElement();
300 rssWriter.WriteString("n ");
301
302 }
303
304 /**//// <ringkasan>
305 /// Tutup elemen item
306 /// </ringkasan>
307 kekosongan pribadi WriteItemEnd()
308 {
309 rssWriter.WriteString("n ");
310 rssWriter.WriteEndElement();
311 rssWriter.WriteString("n ");
312 }
313
314 /**//// <ringkasan>
315 /// Tutup semua elemen
316 /// </ringkasan>
317 kekosongan pribadi WriteEnd()
318 {
319 rssWriter.WriteEndElement();
320 rssWriter.WriteString("n");
321 rssWriter.WriteEndElement();
322 rssWriter.WriteEndDocument();
323 }
324
325 #wilayah akhir
326
327 /**//// <ringkasan>
328 /// Menulis umpan RSS
329 /// </ringkasan>
330 kekosongan publik WriteRSS()
331 {
332 TulisProlog();
333 foreach (info ItemInfo dalam item)
334 {
335 Item Tulis(info);
336 jika (hasMedia)
337 WriteItemMedia(info);
338 TulisItemEnd();
339 }
340 Akhir Tulis();
341 }
342 }
343}
Kemudian gunakan kelas FeedBase.cs untuk memanggil metode dan properti di kelas RssBase di atas. Kodenya adalah sebagai berikut. (File ini telah diubah. Jika Anda ingin mengkompilasinya, Anda perlu melakukan modifikasi yang relevan)
1menggunakan System.Collections.Generic;
2menggunakan Sistem.Konfigurasi;
3menggunakan Sistem.Data;
4menggunakan System.Text;
5menggunakan Sistem.Web;
6menggunakan Sistem.Web.UI;
7menggunakan System.Xml;
8
9
10 Basis Umpan kelas publik : Halaman
11{
12 kekosongan publik GenerateRss()
13 {
14
15 IList<RssBase.ItemInfo> item = Daftar baru<RssBase.ItemInfo>();
16
17 // Mengisi item.
18 foreach (baris DataRow dalam baris)
19 {
20 RssBase.ItemInfo item = RssBase.ItemInfo baru(baris["Judul"].ToString(), "link", baris["Deskripsi"].ToString(), baris["Tanggal Pub"].ToString(), baris[ "Penulis"].ToString(), "guid");
21 item.Tambahkan(item);
dua puluh dua }
dua puluh tiga
24 XmlTextWriter xmlWriter = XmlTextWriter baru(Respon.OutputStream,
25 Pengkodean.UTF8);
26
27 RssBase rssBase = RssBase baru(xmlWriter, false, item);
28 rssBase.WriteRSS();
29
30 xmlWriter.Flush();
31 xmlWriter.Tutup();
32
33 Response.ContentEncoding = Pengkodean.UTF8;
34 Response.ContentType = "teks/xml";
35 Respon.Cache.SetCacheability(HttpCacheability.Public);
36
37 Respon.End();
38 }
39
40}
41
42
Terakhir, buat saja file feed.aspx baru, warisi kelas FeedBase, dan panggil metode GenerateRss() di kelas ini untuk dengan mudah menghasilkan RSS Feed yang Anda inginkan :)
Jika Anda memiliki saran atau ide, silakan tinggalkan pesan!
http://www.cnblogs.com/jerryhu/archive/2006/08/30/490544.html