首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 使用 Microsoft.Feeds.Interop 讀取 RSS 完整內容

     編輯:關於C#

.NET Framework 內建的 Microsoft.Feeds.Interop (Windows RSS Platform) 可直接存取 IE/Edge 共用的訂閱源資料庫,支援下載完整 RSS/Atom 項目內容。本文示範如何以 COM Interop 方式讀取並匯出 RSS 全文至 XML 檔案。

前置需求

  • 專案參考加入 Microsoft Feeds Interop (COM 索引標籤 → Microsoft Feeds 1.0 Type Library)
  • 目標平台勾選 Prefer 32-bit (若在 64-bit 程序中呼叫 32-bit COM 元件)
  • Windows 需已安裝 IE 7+ 或已啟用 Windows RSS Platform

完整程式碼

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 (NuGet) — 支援 RSS 0.91/1.0/2.0、Atom 0.3/1.0、JSON Feed
  • SyndicationFeed (System.ServiceModel.Syndication) — .NET 內建,功能完整
  • HtmlAgilityPack + HttpClient — 針對非標準 Feed 需自行解析 HTML
// 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}");
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved