国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 12:55:07
字體:
來源:轉載
供稿:網友
    最近我一直在尋找如何在web頁面上顯示rss feed的方法,我選擇 c#和asp.net作為工具。我創建了一個簡單的處理函數來處理從一個url獲得的rss feed。你可以直接使用這個簡單的函數,或者改造成你想要的功能。

  這個函數使用一個字符串rssurl作為它的參數。這個字符串包含了rss的url。它使用rssurl的值建立了一個webrequest項:

system.net.webrequest myrequest = system.net.webrequest.create(rssurl);
  這個請求的響應將會被放到一個webresponse對象里:

system.net.webresponse myresponse = myrequest.getresponse();
  然后這個webresponse對象被用來建立一個流來取出xml的值:

system.io.stream rssstream = myresponse.getresponsestream();
  然后可以使用一個xmldocument對象來存儲流中的xml內容。xmldocument對象用來調入xml的內容:

system.xml.xmldocument rssdoc = new system.xml.xmldocument();
rssdoc.load(rssstream);
  因為rss feed不只是一個xml文件,我們可以假設里面包含了一些rss標準的規定。這里,我們假設使用了rss 2.0。你可以從http://blogs.law.harvard.edu/tech/rss里得到規范的詳細內容。

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

system.xml.xmlnodelist rssitems = rssdoc.selectnodes("rss/channel/item");
  rssitems存儲了從rss里獲得所有項節點的信息。這樣就可取得內部所需要的信息了。這里,標題、鏈接和每個項的描述將會被顯示。在rssitems中存儲的每個項,每個標記(tag)元素都可以用selectsinglenode方法提取出來。返回的值將被賦給一個xmlnode對象。以下代碼獲取了一個標題節點:

system.xml.xmlnode rssdetail;
rssdetail = rssitems.item(i).selectsinglenode("title");
  現在標記需要被提取出來,使用innertext完成這項工作。在調用selectsinglenode之后,可以用rssdetail來測試格式化的rss xml是否包含某些標記:

if (rssdetail != null) { title = rssdetail.innertext; } else { title = ""; }
  這樣,你就完成了從一個feed里獲取rss內容的工作。剩下的工作就是調用這個方法來顯示feed的內容了。以下是一個使用asp.net完成的完整的例子:

<%@ page language="c#" %>

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en"
"http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<script runat="server">
public void processrssitem(string rssurl)
{
 system.net.webrequest myrequest = system.net.webrequest.create(rssurl);
 system.net.webresponse myresponse = myrequest.getresponse();

 system.io.stream rssstream = myresponse.getresponsestream();
 system.xml.xmldocument rssdoc = new system.xml.xmldocument();
 rssdoc.load(rssstream);

 system.xml.xmlnodelist rssitems = rssdoc.selectnodes("rss/channel/item");

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

 for (int i = 0; i < rssitems.count; i++)
 {
  system.xml.xmlnode rssdetail;

  rssdetail = rssitems.item(i).selectsinglenode("title");
  if (rssdetail != null)
  {
   title = rssdetail.innertext;
  }
  else
  {
   title = "";
  }

  rssdetail = rssitems.item(i).selectsinglenode("link");
  if (rssdetail != null)
  {
   link = rssdetail.innertext;
  }
  else
  {
   link = "";
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三亚市| 封开县| 甘孜| 合作市| 墨江| 太仓市| 昭觉县| 竹山县| 新安县| 常山县| 湟中县| 余干县| 公主岭市| 韩城市| 塘沽区| 孝义市| 皮山县| 南安市| 成武县| 万源市| 乐昌市| 嘉禾县| 巴彦县| 融水| 北辰区| 新龙县| 林州市| 正定县| 改则县| 中牟县| 玛多县| 惠安县| 广南县| 阳信县| 博乐市| 白河县| 和静县| 望城县| 湖州市| 泗洪县| 鄂托克旗|