前段时间在写RSS Feed。 
 经过了几次的修改,把相关的代码写成了单独的类。 
 感觉重用时还算比较方便的。于是贴出来,大家一起研究研究。
  1using System; 
  2using System.Collections.Generic; 
  3using System.Xml; 
  4    
  5   namespace MyMedia.Utilities 
  6   
  7    public class RssBase 
  8    
  9    
 10       RssBase constructor 
 22       
 23       [Serializable] 
 24       public sealed class ItemInfo 
 25       
 26       
 27       ItemInfo constructor 
 55       
 56      
 57       Internal item variables 
 75        
 76       Item properties 
150       
151       }
 
152       
153       Const string 
169       
170       Internal member variables 
175       
176       Properties 
193       
194       Private method 
328       
329       /**//// <summary> 
330       /// Write RSS feed 
331       /// </summary> 

332       public void WriteRSS() 
333       
334           WritePrologue(); 
335           foreach (ItemInfo info in items) 
336           
337               WriteItem(info); 
338               if (hasMedia) 
339               WriteItemMedia(info); 
340               WriteItemEnd(); 
341           }
 
342         WriteEnd(); 
343       }

344 
345
346     }
  
347   }
 
然后使用一个FeedBase.cs类,调用上面的RssBase类中的方法和属性。代码如下
 1public void GenerateRss()
 2    {
 3        IList<MyMedia.Utilities.RssBase.ItemInfo> items = new List<MyMedia.Utilities.RssBase.ItemInfo>();
 4
 5        // Populate items. 
 6        DataTable dt = new DataTable();
 7        dt.Columns.Add("Title");
 8        dt.Columns.Add("Description");
 9        dt.Columns.Add("PubDate");
10        dt.Columns.Add("Author");
11
12        DataRow dr = dt.NewRow();
13        dr[0= "t1";
14        dr[1= "t2";
15        dr[2= "t3";
16        dr[3= "t4";
17        dt.Rows.Add(dr);
18        dt.AcceptChanges();
19        this.GridView1.DataSource = dt;
20        GridView1.DataBind();
21        foreach (DataRow row in dt.Rows)
22        {
23            MyMedia.Utilities.RssBase.ItemInfo item = new MyMedia.Utilities.RssBase.ItemInfo(row["Title"].ToString(), "link", row["Description"].ToString(), row["PubDate"].ToString(), row["Author"].ToString(), "guid");
24            items.Add(item);
25        }

26
27        XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
28
29        MyMedia.Utilities.RssBase rssBase = new MyMedia.Utilities.RssBase(xmlWriter, false, items);
30        rssBase.WriteRSS();
31
32        xmlWriter.Flush();
33        xmlWriter.Close();
34
35        Response.ContentEncoding = Encoding.UTF8;
36        Response.ContentType = "text/xml";
37        Response.Cache.SetCacheability(HttpCacheability.Public);
38
39        Response.End();
40    }

posted on 2006-12-27 14:54  Caviare  阅读(383)  评论(0编辑  收藏  举报