最近我一直在尋找如何在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
你可以從裡得到規范的詳細內容
具體的來說
每個項應該在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
//W
C//DTD XHTML
Transitional//EN
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 =
; 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 =
;
}
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