2009-07-21 100 views
1

我想知道我們可以在c#donet中創建應用程序,其中我們可以直接在窗體中顯示RSS源或可以創建窗口小部件。並且對於每一個更新應該有通知給用戶。雖然iam通過顯示RSS源的網頁來顯示RSS源。如何在c#窗口應用程序中顯示RSS源

回答

1

創建一個計時器,該計時器將定期檢查RSS,如果最近的項目「pubDate」與您收到的最後一個項目不一樣,那麼所有的項目的日期/時間您收到的最近的項目將需要通知。

+0

但我怎麼能檢查包含RSS訂閱頁面的內容。我如何存儲內容 – banita 2009-07-23 07:47:25

0

這裏是我爲我的博客代碼 您可以訪問here

public XmlDocument GetRss(int count) 
    { 
     XmlDocument xml=new XmlDocument(); 
     XmlElement root,chn,elm; 
     xml.AppendChild(xml.CreateXmlDeclaration("1.0", "utf-8", "yes")); 
     root = xml.CreateElement("rss"); 
     root.SetAttribute("version", "2.0"); 
     xml.AppendChild(root); 

     chn = xml.CreateElement("channel"); 
     root.AppendChild(chn); 

     elm = xml.CreateElement("title"); 
     elm.InnerText = System.Web.Configuration.WebConfigurationManager.AppSettings["sitename"]; 
     chn.AppendChild(elm); 

     elm = xml.CreateElement("link"); 
     elm.InnerText = System.Web.Configuration.WebConfigurationManager.AppSettings["host"]; 
     chn.AppendChild(elm); 

     elm = xml.CreateElement("description"); 
     elm.InnerText = System.Web.Configuration.WebConfigurationManager.AppSettings["sitedes"] ; 
     chn.AppendChild(elm); 


     List<Blog> blogs = BlogManager.Instance.GetBlogLists(count); 
     foreach (Blog bg in blogs) 
     { 
      Blog blog=BlogManager.Instance.ReadBlog(bg.keyword,bg.path); 
      if (blog.encryption.Trim() == string.Empty) 
      { 
       XmlElement item = xml.CreateElement("item"); 
       chn.AppendChild(item); 
       elm = xml.CreateElement("title"); 
       item.AppendChild(elm); 
       elm.InnerText = blog.title; 

       elm = xml.CreateElement("pubDate"); 
       item.AppendChild(elm); 
       elm.InnerText = blog.pubdate.ToString("r"); 

       elm = xml.CreateElement("link"); 
       item.AppendChild(elm); 
       elm.InnerText = System.Web.Configuration.WebConfigurationManager.AppSettings["host"] + "Blog/"+bg.path+"/" + blog.keyword + ".esp"; 

       elm = xml.CreateElement("description"); 
       item.AppendChild(elm); 
       elm.AppendChild(xml.CreateCDataSection(blog.description)); 

       elm = xml.CreateElement("guid"); 
       item.AppendChild(elm); 
       elm.InnerText = System.Web.Configuration.WebConfigurationManager.AppSettings["host"] + "Blog/" + bg.path + "/" + blog.keyword + ".esp"; 
       elm.SetAttribute("isPermaLink", "false"); 
      } 

     } 
     return xml; 

    } 

你可以設置成使用系統的IHttpHandler形式

; using System.Web; 使用Edwin.Web;使用Edwin.Object的 ; using System.Collections.Generic; 公共類RSS:IHttpHandler的{

public void ProcessRequest (HttpContext context) { 
    if (context.Request.RawUrl.ToLower().Trim().IndexOf(".ashx") != -1) context.Response.Redirect(context.Request.RawUrl.Replace(".ashx", ".esp")); 
    context.Response.AddHeader("Cache-Control", "no-cache"); 
    context.Response.ContentType = "text/xml; charset=utf-8"; 
    Edwin.Web.BlogManager.Instance.GetRss(20).Save(context.Response.OutputStream); 

} 

public bool IsReusable { 
    get { 
     return false; 
    } 
} 

}

相關問題