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
这些测试覆盖列出的样本和边界,不代表所有输入都已证明正确。往返测试和使用同一依赖库的检查,不属于独立交叉验证。