熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#+ASP.NET開發基於Web的RSS閱讀器

2013-11-13 10:04:45  來源: .NET編程 
    最近我一直在尋找如何在web頁面上顯示RSS Feed的方法我選擇 C#和ASPNET作為工具我創建了一個簡單的處理函數來處理從一個URL獲得的RSS Feed你可以直接使用這個簡單的函數或者改造成你想要的功能

  這個函數使用一個字符串rssURL作為它的參數這個字符串包含了RSS的URL它使用rssURL的值建立了一個WebRequest項


SystemNetWebRequest myRequest = SystemNetWebRequestCreate(rssURL);
  這個請求的響應將會被放到一個WebResponse對象裡


SystemNetWebResponse myResponse = myRequestGetResponse();
  然後這個WebResponse對象被用來建立一個流來取出XML的值


SystemIOStream rssStream = myResponseGetResponseStream();
  然後可以使用一個XmlDocument對象來存儲流中的XML內容XmlDocument對象用來調入XML的內容


SystemXmlXmlDocument rssDoc = new SystemXmlXmlDocument();
rssDocLoad(rssStream);
  因為RSS Feed不只是一個XML文件我們可以假設裡面包含了一些RSS標准的規定這裡我們假設使用了RSS 你可以從裡得到規范的詳細內容

  具體的來說每個項應該在rss/channel/裡使用XPath表達一個項節點列表可以如下方式創建


SystemXmlXmlNodeList rssItems = rssDocSelectNodes(rss/channel/item);
  rssItems存儲了從RSS裡獲得所有項節點的信息這樣就可取得內部所需要的信息了這裡標題鏈接和每個項的描述將會被顯示在rssItems中存儲的每個項每個標記(tag)元素都可以用SelectSingleNode方法提取出來返回的值將被賦給一個XMLNode對象以下代碼獲取了一個標題節點


SystemXmlXmlNode rssDetail;
rssDetail = rssItemsItem(i)SelectSingleNode(title);
  現在標記需要被提取出來使用InnerText完成這項工作在調用SelectSingleNode之後可以用rssDetail來測試格式化的RSS XML是否包含某些標記


if (rssDetail != null) { title = rssDetailInnerText; } else { title = ; }
  這樣你就完成了從一個Feed裡獲取RSS內容的工作剩下的工作就是調用這個方法來顯示Feed的內容了以下是一個使用ASPNET完成的完整的例子


<%@ Page Language=C# %>

<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN
transitionaldtd

<script runat=server
public void ProcessRSSItem(string rssURL)
{
 SystemNetWebRequest myRequest = SystemNetWebRequestCreate(rssURL);
 SystemNetWebResponse myResponse = myRequestGetResponse();

 SystemIOStream rssStream = myResponseGetResponseStream();
 SystemXmlXmlDocument rssDoc = new SystemXmlXmlDocument();
 rssDocLoad(rssStream);

 SystemXmlXmlNodeList rssItems = rssDocSelectNodes(rss/channel/item);

 string title = ;
 string link = ;
 string description = ;

 for (int i = ; i < rssItemsCount; i++)
 {
  SystemXmlXmlNode rssDetail;

  rssDetail = rssItemsItem(i)SelectSingleNode(title);
  if (rssDetail != null)
  {
   title = rssDetailInnerText;
  }
  else
  {
   title = ;
  }

  rssDetail = rssItemsItem(i)SelectSingleNode(link);
  if (rssDetail != null)
  {
   link = rssDetailInnerText;
  }
  else
  {
   link = ;
  }

  rssDetail = rssItemsItem(i)SelectSingleNode(link);

  if (rssDetail != null)

  {

  link = rssDetailInnerText;

  }

  else

  {

  link = ;

  }

  rssDetail = rssItemsItem(i)SelectSingleNode(description);

  if (rssDetail != null)

  {

  description = rssDetailInnerText;

  }

  else

  {

  description = ;

  }

  ResponseWrite(<p><b><a + link + target=new + title + </a></b><br/>);

  ResponseWrite(description + </p>);

  }

  }

  </script>

  <html xmlns=

  <head runat=server

  <title>Untitled Page</title>

  </head>

  <body>

  <form id=form runat=server

  <div>

  <%

  string rssURL = _includes/feeds/codeguru/rssallxml;

  ResponseWrite(<font size=><b>Site: + rssURL + </b></font><Br />);

  ProcessRSSItem(rssURL);

  ResponseWrite(<hr />);

  rssURL = _includes/feeds/special/devxml;

  ResponseWrite(<font size=><b>Site: + rssURL + </b></font><Br />);

  ProcessRSSItem(rssURL);

  %>

  </div>

  </form>

  </body>

</html>

  顯示結果如下

  


From:http://tw.wingwit.com/Article/program/net/201311/12490.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.