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

C# 讀取 RSS 完整內容:使用 Microsoft Feeds API

     編輯:關於C語言

功能說明

利用 Microsoft.Feeds.Interop 組件 (Windows RSS Platform API) 訂閱、下載並解析 RSS Feed,將完整 XML 內容儲存至本地檔案。

完整原始碼


using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Microsoft.Feeds.Interop;

namespace RssFeedReader
{
    class ReadRssFeed
    {
        static void Main(string[] args)
        {
            FeedsManagerClass fm = new FeedsManagerClass();
            string url = @"https://www.nordpoolspot.com/alerts/umm_feed";
            
            IFeedFolder rootFolder = (IFeedFolder)fm.RootFolder;
            IFeed feed = null;

            // 檢查是否已訂閱
            if (!fm.IsSubscribed(url))
            {
                feed = (IFeed)rootFolder.CreateFeed(url, url);
                feed.Rename("Nord Pool Spot UMM");
            }
            else
            {
                feed = (IFeed)fm.GetFeed(@"Nord Pool Spot UMM");
            }

            // 下載最新內容
            feed.Download();

            // 取得第一篇文章標題
            IFeedItem item = feed.GetItem(0) as IFeedItem;
            string title = item.Title;

            // 匯出完整 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
            );

            // 寫入檔案
            using (StreamWriter sw = new StreamWriter(File.OpenWrite("test.xml")))
            {
                sw.Write(xml);
            }
        }
    }
}

關鍵 API 解析

API用途
FeedsManagerClassRSS 管理核心類別,提供訂閱、下載、查詢功能
IFeedFolder資料夾介面,RootFolder 為根目錄
IFeed單一 Feed 介面,含 Download()、GetItem()、XML() 等方法
IFeedItem單篇文章介面,含 Title、Link、Description 等屬性
feed.XML()匯出完整 Feed XML,支援排序、過濾、擴充資料選項

參數說明

  • 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:包含 Content Format 擴充資料

環境需求

  1. Windows Vista/7/8/10/11 或 Windows Server 2008+ (內建 Windows RSS Platform)
  2. 參考組件:Microsoft.Feeds.Interop.dll (通常在 C:\Windows\System32\)
  3. 專案設定:目標平台 x86/x64 需與 OS 一致 (Interop 組件為原生代碼)

現代替代方案

若不想依賴 Windows 專有 API,建議使用跨平台開源庫:

  • CodeHollow.FeedReader:支援 RSS 2.0/1.0、Atom 1.0、JSON Feed
  • SyndicationFeed (.NET 內建 System.ServiceModel.Syndication)
  • HtmlAgilityPack + HttpClient:自行解析 XML/HTML

使用範例 (CodeHollow.FeedReader)


using CodeHollow.FeedReader;

var reader = new FeedReader();
var feed = await reader.ReadAsync("https://example.com/rss");

foreach (var item in feed.Items)
{
    Console.WriteLine($"{item.Title} - {item.Link}");
    Console.WriteLine(item.Description);
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved