[研究][ASP.NET]RSS (用 FileStream 和 StreamWriter)
2022-12-23
RSS(英文全稱:RDF Site Summary 或 Really Simple Syndication),中文譯作簡易資訊聚合,也稱聚合內容,是一種訊息來源格式規範,用以聚合多個網站更新的內容並自動通知網站訂閱者。使用 RSS 後,網站訂閱者便無需再手動檢視網站是否有新的內容,同時 RSS 可將多個網站更新的內容進行整合,以摘要的形式呈現,有助於訂閱者快速獲取重要資訊,並選擇性地點閱檢視。
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#
********************************************************************************
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <a href="myfeed.xml">myfeed.xml</a> </div> </form> </body> </html> |
Default.aspx.cs
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { FileStream fs = null; StreamWriter sw = null; try { fs = new FileStream(Server.MapPath(".") + "\\myfeed.xml", System.IO.FileMode.Create, System.IO.FileAccess.Write); sw = new StreamWriter(fs); // Write header of RSS file. sw.WriteLine("<?xml version=\"1.0\"?>"); sw.WriteLine("<rss version=\"2.0\" xml:base=\"http://www.myWebSite.com\">"); sw.WriteLine("<channel>"); sw.WriteLine("<title>My RSS Feed Title</title>"); sw.WriteLine("<link>http://www.myWebsite.com</link>"); sw.WriteLine("<description>My feed description</description>"); sw.WriteLine("<language>en-us</language>"); sw.WriteLine("<image>"); sw.WriteLine("<title>My Title</title>"); sw.WriteLine("<url>http://www.myWebsite.com/image.gif</url>"); sw.WriteLine("<link>http://www.myWebsite.com</link>"); sw.WriteLine("<width>50</width>"); sw.WriteLine("<height>60</height>"); sw.WriteLine("</image>"); // Done adding header of RSS file. // Begin adding items (article content). sw.WriteLine("<item>"); sw.WriteLine("<title>Title of article</title>"); sw.WriteLine("<link>http://www.myWebsite.com/page1.html</link>"); sw.WriteLine("<description><![CDATA[Body of content goes here.<BR>HTML text can be included inside this tag.<BR>]]></description>"); sw.WriteLine("<pubDate>" + System.DateTime.Now.ToString("r") + "</pubDate>"); sw.WriteLine("</item>"); // End adding item (you can continue adding items here). // Write footer of RSS feed. sw.WriteLine("</channel>"); sw.WriteLine("</rss>"); } catch (Exception exp) { //Debug.WriteLine("Error: " + exception.Message); } finally { sw.Close(); fs.Close(); } } } } |
敝人測試,這種作法有個缺點,輸入的文字是靜態確認的,如果參雜了不確定內容的字串變數,會出錯。(例如從資料庫抓出的資料)(有點怪,待研究)
(完)
相關
RSS - 維基百科,自由的百科全書
https://zh.m.wikipedia.org/zh-tw/RSS
System.ServiceModel.Syndication 命名空間
https://learn.microsoft.com/zh-tw/dotnet/api/system.servicemodel.syndication?view=dotnet-plat-ext-7.0
Rss20FeedFormatter 類別 (System.ServiceModel.Syndication) | Microsoft Learn
https://learn.microsoft.com/zh-tw/dotnet/api/system.servicemodel.syndication.rss20feedformatter?view=dotnet-plat-ext-7.0
沒有留言:
張貼留言