.NET Framework 內建的 Microsoft.Feeds.Interop (Windows RSS Platform) 可直接存取 IE/Edge 共用的訂閱源資料庫,支援下載完整 RSS/Atom 項目內容。本文示範如何以 COM Interop 方式讀取並匯出 RSS 全文至 XML 檔案。
using System;
using System.IO;
using Microsoft.Feeds.Interop;
namespace RssFeedReader
{
class Program
{
static void Main()
{
var fm = new FeedsManagerClass();
string url = "https://www.nordpoolspot.com/alerts/umm_feed";
string feedName = "Nord Pool Spot UMM";
IFeed feed;
if (!fm.IsSubscribed(url))
{
IFeedFolder root = (IFeedFolder)fm.RootFolder;
feed = (IFeed)root.CreateFeed(url, url);
feed.Rename(feedName);
}
else
{
feed = (IFeed)fm.GetFeed(feedName);
}
// 強制下載最新內容
feed.Download();
// 取得第一筆項目標題示範
IFeedItem firstItem = feed.GetItem(0) as IFeedItem;
Console.WriteLine("第一筆標題:" + firstItem?.Title);
// 匯出完整 RSS 為 XML (含所有項目、依發布日期升冪排序)
string xml = feed.Xml(
feed.ItemCount,
FEEDS_XML_SORT_PROPERTY.FXSP_PUBDATE,
FEEDS_XML_SORT_ORDER.FXSO_ASCENDING,
FEEDS_XML_FILTER_FLAGS.FXFF_ALL,
FEEDS_XML_INCLUDE_FLAGS.FXIF_CF_EXTENSIONS
);
File.WriteAllText("test.xml", xml);
Console.WriteLine("已匯出 test.xml");
}
}
}
| 介面/列舉 | 用途 |
|---|---|
FeedsManagerClass | 進入點,管理訂閱、根資料夾 |
IFeedFolder | 資料夾節點,可建立/刪除 Feed |
IFeed | 單一訂閱源,提供下載、項目存取、XML 匯出 |
IFeedItem | 單一文章項目,含 Title、Link、Content、PubDate 等 |
FEEDS_XML_SORT_PROPERTY | 排序欄位:PUBDATE、TITLE、AUTHOR 等 |
FEEDS_XML_SORT_ORDER | 升冪/降冪 |
FEEDS_XML_FILTER_FLAGS | 篩選:ALL、UNREAD、FLAGGED |
FEEDS_XML_INCLUDE_FLAGS | 包含擴充內容:FXIF_CF_EXTENSIONS |
Windows RSS Platform 已停止更新,新專案建議改用純 managed library:
// CodeHollow.FeedReader 範例
var reader = new FeedReader();
var feed = await reader.ReadAsync("https://example.com/rss");
foreach (var item in feed.Items)
Console.WriteLine($"{item.PublishingDate:yyyy-MM-dd} {item.Title}");