RSS 與 Atom 訂閱解析
從本地 XML 提取條目、鏈接、作者、日期和附件,導出 JSON、CSV 或 URL 列表。
讀取訂閱,不打開其中的鏈接
粘貼 XML 或打開 UTF-8 文件。支持包含一個 channel 的 RSS 2.0、Atom 1.0 feed 和獨立 Atom entry 文檔。Atom 前綴按命名空間識別,不依賴具體拼寫。報告包含條目、作者、分類、替代鏈接和附件;標題與摘要作為文本處理,不插入可執行 HTML。
可選訂閱文檔 URL 用於解析相對引用,嵌套 xml:base 會逐層繼承。沒有可用基址時,相對鏈接仍保留在報告中,並標記未解析,不偽造目標 URL。不安全或不支持的協議保留原始值,但不進入主要 HTTP URL 導出。
日期保留來源值
報告保留去除首尾空白後的原始日期;支持轉換時另給 UTC ISO 值。Atom 使用帶明確時區的 RFC 3339 時間;RSS 支持常見 RFC 822 風格日期、數字時差及 UT/GMT/美國標準縮寫,也支持兩位年份。日期與時間會校驗,2 月 30 日不會自動滾到 3 月。
閏秒和未知時差保留原文,不臆造歸一化時間;星期不一致會標記。原始字符串保留毫秒以下精度,UTC 輸出使用毫秒。日期無效也不會丟棄整條記錄;RSS 的 dc:date 按命名空間識別。
按用途選擇導出
JSON 保留結構化元數據和各鏈接的問題。CSV 每個返回條目一行,使用 CRLF 並保護公式單元格。URL 列表只輸出條目的主要 HTTP/HTTPS 網址,優先選擇 HTML alternate 鏈接。RSS 沒有主要鏈接時,可使用有效 guid 作為後備,除非 isPermaLink 為 false;ID 保持字符串,不按 URL 規範化。
去重可選:優先按區分大小寫的 ID,無 ID 時按主要 URL,保留第一次出現的條目,再應用返回數量限制,報告明確說明是否截斷。原始正文模式將 HTML 或序列化 XHTML 作為數據輸出,不下載附件,也不解碼內嵌二進制內容。
校驗範圍與限制
工具不是完整 RSS/Atom Schema 或語義校驗器。可以報告缺少條目文本、缺少 Atom ID、日期問題、無效基址和不可用鏈接,但無問題報告不等於訂閱完全符合規範。HTML 摘要通過惰性解析器轉為文字,略過腳本和樣式。
拒絕有效 DTD/實體聲明、格式錯誤的 XML、非法 XML 字符,以及超過 64 層的嵌套;註釋和 CDATA 可包含字面的 DOCTYPE 示例。輸入最多 2,097,152 個 UTF-16 單位,上傳 UTF-8 文件最多 2 MiB,XML 樹最多 100,000 個節點,訂閱最多 5,000 條。輸出最多 8,388,608 個字符;預覽超過 200,000 時截短,複製和下載保留完整內容。處理在本機 Worker 進行,15 秒超時停止。
常見問題
會加載鏈接、圖片或音頻嗎?
不會。XML 和可選原始 HTML 均作為數據讀取,不打開文章、圖片、附件或外部實體。
為什麼相對網址沒有解析結果?
請提供文檔的公開 URL 或有效 xml:base;本地文件名不能推導原站網址。
能解析出條目就表示訂閱有效嗎?
不表示。工具只提供結構化解析及部分診斷,發佈時仍應核對源文檔和規範。
其他語言
參考資料
- RSS 2.0 Specification (Current)
- RFC 4287 - The Atom Syndication Format
- GitHub - xmldom/xmldom: A pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. · GitHub
- GitHub - inikulin/parse5: HTML parsing/serialization toolset for Node.js. WHATWG HTML Living Standard (aka HTML5)-compliant. · GitHub
我們如何確保結果正確
我們使用以下自動化測試驗證此工具。下方保留測試案例的原始名稱,方便查看實際斷言及重現。
- 驗證方法
- 檢查 RSS/Atom 字段、Unicode、命名空間、相對 URL、附件長度和原始時間戳。
- 對比依據
- 明確 RSS/Atom XML 樣本和預期條目。
- 驗證範圍
- 只覆蓋這些樣本和邊界;不代表所有輸入均已證明正確。
測試原始碼與案例(點選檔名檢視)
-
feed-tools.test.js
- RSS preserves Unicode, decoded query values, original timestamps and exact enclosure length text
- Atom namespace aliases, inherited and nested xml:base, language links and feed authors are honored
這些測試涵蓋列出的樣本和邊界,不代表所有輸入都已證明正確。往返測試和使用同一依賴套件的檢查,不屬於獨立交叉驗證。