国产探花免费观看_亚洲丰满少妇自慰呻吟_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 = "";
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汤原县| 邮箱| 尉氏县| 扎囊县| 本溪市| 玛多县| 永新县| 金坛市| 西丰县| 同德县| 武鸣县| 荔浦县| 乐平市| 邵阳县| 邹城市| 揭阳市| 南郑县| 南皮县| 泰兴市| 肇州县| 宁国市| 拜城县| 韶关市| 澄城县| 顺昌县| 宜阳县| 包头市| 黎城县| 灌阳县| 连江县| 东源县| 获嘉县| 乌拉特后旗| 湖南省| 屏东市| 高碑店市| 犍为县| 石屏县| 伊宁市| 阿拉善盟| 会泽县|