六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用ASP.NET創建一個在線RSS新聞聚合器

[摘要]概要   本文講解了如何使用 XML Web 控件獲取遠程XML數據并在 ASP.NET 頁面顯示這些XML數據,以及使用Repeater控件發布數據庫中的XML數據。在過去的幾年間,隨著 異構平臺間共享數據的需求不斷增長,XML的使用也呈爆炸性增長。意識到這種趨勢,微軟在整個.NET框架中對 X...
概要

  本文講解了如何使用 XML Web 控件獲取遠程XML數據并在 ASP.NET 頁面顯示這些XML數據,以及使用Repeater控件發布數據庫中的XML數據。在過去的幾年間,隨著 異構平臺間共享數據的需求不斷增長,XML的使用也呈爆炸性增長。意識到這種趨勢,微軟在整個.NET框架中對 XML 提供了健壯的支持。這意味著,對于 ASP.NET 開發者來說,在Web頁面 中顯示和處理 XML 數據從來沒有這么容易過。本文將通過生成一個 RSS2.0 聚合引擎和在線新聞聚合器來學習 XML 和 ASP.NET 技術。 本文假設讀者熟悉 ASP.NET 和 XML。
簡介

  隨著辦公室和家庭上網在線時間的延長,以及 Web 站點和可訪問的互聯網應用程序呈持續爆炸性增長,應用程序之間能數據共享變得越來越重要。在 異構平臺之間共享數據需要一種平臺中立的數據格式,這種數據格式要求能易于通過標準的互聯網協議來傳輸,而這正是XML的用武之地。因為XML文件本質上 只是一個文本文件,其編碼格式眾所周知,而且現有的XML解析器能為所有主流編程語言所用,所以XML數據能被任何平臺輕松使用。

  Web 網站聚合就是一種使用 XML 來共享數據的范例,在新聞站點和網志中經常可以看到。采用 Web 網站聚合技術,網站能以 XML 格式的 Web 可訪問的聚合文件來發布最新內容。網站使用 的聚合格式有很多種,其中最流行的一種格式就是 RSS2.0。( RSS2.0 規范被發布在 Harvard Law 網站 的技術欄目上)。此外,MSDN 雜志有一個聚合文件:MSDN雜志:本期刊物, 其中列出了最新一期 MSDN 雜志上的文章,包括到在線版本文章的鏈接。

  一旦 Web 站點有了公開發布聚合文件,那么不同的客戶端就可以消費它。消費聚合文件的方式有很多種,比如,某個提供 .NET 技術資源的站點可能希望在網站中 添加最新的 MSDN 雜志文章標題。聚合文件還常常被新聞聚合器程序所用,這種程序被專門設計用來獲取和顯示不同來源的聚合文件。

  隨著人們越來越注重使用 XML 數據,在 ASP.NET 頁面中處理 XML 數據的能力變得比以往更關鍵。既然 Web 站點聚合如此重要, 本文我們就來創建一個 Web 站點聚合文件生成程序和一個在線新聞聚合器。在建立這兩個微型程序的過程中,我們將講述如何訪問和顯示XML數據,不論這些數據是來自遠端的Web服務器還是本地的文件系統。我們將演示如 何多種不同的方法顯示XML數據,比如:用 Repeater 控件以及用 ASP.NET XML Web控件。

   使用 RSS2.0 規范的聚合內容

  本文我們將要創建的第一個微型程序是一個聚合文件生成器。針對這個迷你程序,假設你是一個大型新聞網站(如 MSNBC.com)的 Web 開發者,所有的新聞內容都保存在 Microsoft SQL Server 2000 數據庫中。具體地說,這些文章是 都保存在一個名為 Articles 的表中,表中以下字段與我們的程序密切相關:

  ·ArticleID—主鍵,自增長的整型字段,用來唯一標識每一篇文章;

  ·Title— 指定標題,字段數據類型: varchar(50);

  ·Author—指定作者,字段數據類型: varchar(50);

  ·Description—新聞內容描述,字段數據類型: varchar(2000);

  ·DatePublished—新聞發布日期,字段數據類型:datetime

  請注意,Articles 表中可能還有其它字段,上面所列的只是我們在創建聚合文件的時候所要用到的字段。而且,這只是一個非常簡單的數據模型,在 是應用的數據庫環境中,你可能會使用更加標準化的數據庫模型,比如具備一個單獨的 authors (作者)表,有一個建立作者和文章之間多對多關系的表等等。

  下一步,我們將創建一個ASP.NET頁面,用格式化好的 RSS2.0 XML 文件顯示一個最新的新聞列表。在講述如何在 ASP.NET 頁面 中完成這種轉換之前,我們要先介紹一下 RSS2.0 規范的內容。我們應該記住,在整個規范中,RSS 是被設計用來為聚合內容提供一個數據模型。那么 毫無疑問,它會有一系列的 XML 元素,用來描述 Web 站點要聚合的內容信息,以及一系列用來描述某一特定新聞項的 XML 元素。最后,不要忘記 RSS 聚合文件是一個 XML 格式文件,必須符合 XML 格式化的準則, 也就是:

  ·所有 XML元素必須正確嵌套;

  ·所有的屬性值要用引號包含起來;

  ·<, >, &, "和’’符號要相應地替換為 <,> , &, " 和 &apos;;

  而且,XML格式是大小寫敏感的,這就意味著,XML元素的起始和終止標簽必須匹配,拼寫和大小寫都必須一致。

  RSS2.0 的根元素是<rss>元素,這個元素可以有一個版本號的屬性,例如:

<rss version="2.0">
...
</rss>

  <rss>元素只有一個子元素<channel>,用來描述聚合的內容。在<channel>元素里面有三個必需的子元素,用來描述 Web 站點的信息。這三個元素是:

  ·title—定義聚合文件的名稱,一般來說,還會包括Web站點的名稱;

  ·link—Web站點的URL;

  ·description—Web站點的一段簡短的描述。

  除此之外,還有一些可選元素來描述站點信息。這些元素的更多信息請參見 RSS2.0規范。

  每一個新聞項目放在一個單獨的<item>元素中。<channel>元素可以有任意數量的<item>元素。每個<item>元素可以有多種的子元素,唯一的要求是最少必須包含<title>元素和<description>元素其中一個作為子元素。以下列出了一些相關的<item> 子元素:

  ·title—新聞項目的標題;

  ·link—新聞項目的URL;

  ·description—新聞項目的大綱;

  ·author—新聞項目的作者;

  ·pubDate—新聞項目的發布日期

  下面是一個非常簡單的 RSS2.0 聚合文件。你可以從 RSS generated by Radio UserLand 看到其他的RSS2.0文件的例子。

<rss version="2.0">
<channel>
<title>Latest DataWebControls.com FAQs</title>
<link>http://datawebcontrols.com</link>
<description>
This is the syndication feed for the FAQs
at DataWebControls.com
</description>
<item>
<title>Working with the DataGrid</title>
<link>http://datawebcontrols.com/faqs/DataGrid.aspx</link>
<pubDate>Mon, 07 Jul 2003 21:00:00 GMT</pubDate>
</item>
<item>
<title>Working with the Repeater</title>
<description>
This article examines how to work with the Repeater
control.
</description>
<link>http://datawebcontrols.com/faqs/Repeater.aspx</link>
<pubDate>Tue 08 Jul 2003 12:00:00 GMT</pubDate>
</item>
</channel>
</rss>


  關于<pubDate>元素的格式有一點特別重要,再此要講一下。RSS 要求日期必須按照 RFC822 日期和時間規范 進行格式化,此格式要求:開頭是一個可選的3字母星期縮寫加一個逗號,接著必須是日加上3字母縮寫的月份和年份,最后是一個帶時區名的時間。另外,要注意 <description> 子元素是可選的:上 述文件第一個新聞沒有 <description> 元素,而第二個新聞就有一個。

   通過 ASP.NET 頁面輸出聚合內容

  現在,我們已經知道了如何按照 RSS2.0 規范存儲我們的新聞項,我們已經就緒創建一個 ASP.NET 頁面,當用戶發出請求時,就會返回網站聚合 的內容。更確切地說,我們將建立一個名字叫 rss.aspx 的 ASP.NET 頁面,這個頁面會按照 RSS2.0 規范的格式返回 Articles 數據庫表中的最新的 5 個新聞項 。

  可以有幾種方法來完成這件事,稍后將會講到。但是現在,我們首先要完成一件事,那就是先要從數據庫中獲得最新的5個新聞項。這可以用下面的 SQL 查詢語句獲得:

SELECT TOP 5 ArticleID,Title,Author,Description,DatePublished FROM Articles ORDER BY DatePublished DESC
  獲得了這些信息以后,我們需要把這些信息轉換成相應的 RSS2.0 格式聚合文件。要把數據庫的數據顯示為XML數據最簡單、快速的方法就是使用 Repeater 控件。準確地說,Repeater 控件 將在 HeaderTemplate 和 FooterTemplate 模版里顯示<rss>元素、<channel>元素以及站點相關的 元素標簽,在 ItemTemplate 模版里面顯示 <item> 元素。下面是我們這個 ASP.NET 頁面(.aspx文件)的 HTML 部分 :

<%@ Page language="c#" ContentType="text/xml" Codebehind="rss.aspx.cs"
AutoEventWireup="false" Inherits="SyndicationDemo.rss" %>
<asp:Repeater id="rptRSS" runat="server">
<HeaderTemplate>
<rss version="2.0">
<channel>
<title>ASP.NET News!</title>
<link>http://www.ASPNETNews.com/Headlines/</link>
<description>
This is the syndication feed for ASPNETNews.com.
</description>
</HeaderTemplate>

<ItemTemplate>
<item>
<title><%# FormatForXML(DataBinder.Eval(Container.DataItem,
"Title")) %></title>
<description>
<%# FormatForXML(DataBinder.Eval(Container.DataItem,
"Description")) %>
</description>
<link>
http://www.ASPNETNews.com/Story.aspx?ID=<%#
DataBinder.Eval(Container.DataItem, "ArticleID") %>
</link>
<author><%# FormatForXML(DataBinder.Eval(Container.DataItem,
"Author")) %></author>
<pubDate>
<%# String.Format("{0:R}",
DataBinder.Eval(Container.DataItem,
"DatePublished")) %>
</pubDate>
</item>
</ItemTemplate>

<FooterTemplate>
</channel>
</rss>
</FooterTemplate>
</asp:Repeater>

  首先要注意的是:上面這段代碼例子只包括 Repeater 控件,沒有其它的 HTML 標記或 Web 控件。這是因為我們希望頁面只輸出 XML 格式的數據。實際上,觀察一下 @Page 指令,你就會發現 ContentType 被設置為XML MIME 類型(text/xml)。其次要注意的是:在 ItemTemplate 模版里,當 在 XML 輸出中添加數據庫字段Title、Description 和 Author 時,我們調用了輔助函數 FormatForXML()。我們 很快就會看到,該函數被定義在后臺編碼的類中,其作用只是將非法的 xml 字符替換為它們對應的合法的轉義字符。最后我們應該注意,在 <pubDate> 元素里面的數據庫字段 DatePublished 是用 String.Format 來格式化的。標準的格式描述符“R”對 DatePublished 的值進行相應的格式化 。

  此 Web 頁面的后臺編碼類代碼并不復雜。Page_Load事件處理函數只是將數據庫查詢結果綁定到 Repeater控件,FormatForXML()函數根據需要做一些簡單的字符串替換。為 簡單起見,下面的例子只列出了這兩個函數的代碼:

  在瀏覽器中訪問 rss.aspx 頁面的截圖參見圖一。


圖一 通過瀏覽器訪問 Rss.aspx 頁面
  

在我們生成在線新聞聚合器之前,讓我談談這個聚合引擎一些可能的增強功能。首先,每一次訪問 rss.aspx 頁面的時候,都要訪問一次數據庫。如果預期可能有大量的人頻繁地訪問 rss.aspx 頁面,使用輸出緩存是很有價值的。其次,通常新聞網站會將聚合的內容分為不同的類別。例如:News.com 有一些專門的聚合內容區, 比如針對企業計算、電子商務、通信的內容等等。在數據庫表 Articles 中加入表示類別的 Category 字段就可以很容易地提供這種支持。這樣 一來,在 rss.aspx 頁面中,可以接收一個表示顯示分類的查詢參數,然后只搜索指定的新聞項分類即可。


[1] [2] [3] [4]  下一頁




主站蜘蛛池模板: 五月花精品视频在线观看 | 在线看片h站 | 日本免费一区二区在线观看 | 日本免费黄色网址 | 日本免费一二三区 | 亚洲第一看片 | 亚洲成人免费网站 | 日韩精品成人a在线观看 | 欧美一级大片免费看 | 最近最新免费视频8 | 亚州视频在线 | 欧美性理论片在线观看片免费 | 人人爽天天碰天天躁夜夜躁 | 青娱乐免费在线观看 | 亚洲免费三区 | 青草视频网 | 日韩特级毛片免费观看视频 | 天天操 夜夜操 | 日韩 亚洲 翔田千里 在线 | 亚洲 欧美 偷自乱 图片 | 四虎国产精品免费观看 | 日日射视频 | 天天做天天干 | 色网站在线 | 亚洲精品国产福利在线观看 | 日韩爽爽视频爽爽 | 一级做a免费视频 | 青春久草| 亚洲a级大片 | 亚洲成在人线中文字幕 | 亚洲 日本 欧美 中文幕 | 日韩手机看片福利精品 | 欧美一级黄色片在线观看 | 日本手机在线视频 | 永久免费在线看mv | 四虎永久免费地址 | 天天舔天天| 特级毛片黑人三人共一女 | 天天摸日日操 | 日韩毛片高清在线看 | 一级一级女人真片 |