乐途乐途
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
  • 学习路径
  • XML 基础语法

    • XML 概述
    • XML 文档结构
    • XML 元素
    • XML 属性
    • XML 语法规则
    • XML 命名空间
    • XML 注释与处理指令
  • DTD 与文档验证

    • DTD 概述
    • DTD 元素声明
    • DTD 属性声明
    • DTD 实体声明
    • DTD 元素与属性对比
    • DTD 完整示例
  • XML Schema 定义

    • XML Schema 概述
    • XSD 简单类型
    • XSD 复杂类型
    • XSD 命名空间与引用
  • XPath 节点定位

    • XPath 概述
    • XPath 路径表达式
    • XPath 谓词与函数
  • XSLT 转换

    • XSLT 概述
    • XSLT 模板与匹配
    • XSLT 控制结构
    • XSLT 输出控制
  • XML 解析技术

    • XML 解析概述
    • DOM 解析
    • SAX 解析
    • StAX 解析
    • XML 与 Java — JAXP
  • XML 在 Java 中的应用

    • Spring XML 配置
    • MyBatis XML 映射
    • pom.xml 与 Maven
    • web.xml 配置详解
  • 现代数据格式对比

    • XML 与 JSON 对比
    • XML 与 YAML 对比
  • XML 显示与浏览器集成

    • XML 在浏览器中的显示
    • XMLHttpRequest 与 AJAX
    • 服务器端 XML 处理
  • XML 进阶查询与链接

    • XQuery 查询语言
    • XLink 超链接
    • XML 验证工具使用
  • XML Web 服务(选读)

    • XML Web 服务概述
    • SOAP 协议详解
    • WSDL 服务描述
    • RSS 内容聚合
    • RDF 资源描述框架

RSS 内容聚合

⚠️ 本章为选读内容

本章定位 :掌握 RSS 2.0 的 XML 格式规范——channel/item 结构、必选/可选元素、聚合阅读器的工作机制,理解 RSS 如何实现"一次发布、全网订阅"的内容分发。

定义与作用

RSS (Really Simple Syndication,真正简易聚合)是一种基于 XML 的内容分发格式。它的核心价值:

  • 网站用 RSS 发布内容摘要
  • 用户用 RSS 阅读器订阅多个网站
  • 无需逐个访问各个网站 ,所有更新自动汇聚到阅读器

RSS 2.0 是应用最广泛的版本,由哈佛大学托管规范(copyright 2003)。

RSS 本质上是一个 XML 文件——.xml 或 .rss 扩展名——其中包含 <channel> 和多个 <item> 元素。

核心原理:RSS 发布-订阅模型

图解释 :RSS 采用"发布-订阅-轮询"模式。网站生成 RSS feed(静态或动态 XML),阅读器定期拉取 feed 检查更新。用户只需打开阅读器,就能看到所有订阅源的更新——省去逐个访问网站的繁琐。

语法/结构要点

RSS 2.0 文档结构

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <!-- channel 必选元素 -->
    <title>...</title>
    <link>...</link>
    <description>...</description>

    <!-- channel 可选元素 -->
    <language>zh-cn</language>
    <pubDate>...</pubDate>
    <lastBuildDate>...</lastBuildDate>
    <generator>...</generator>

    <!-- 若干 item -->
    <item>...</item>
    <item>...</item>
  </channel>
</rss>

channel 核心元素

元素必需说明
<title>是频道名称(如"飞翔科技技术博客")
<link>是频道对应的网站 URL
<description>是频道的一句话描述
<language>否语言代码,如 zh-cn
<pubDate>否频道的发布日期(RFC 822 格式)
<lastBuildDate>否feed 最后修改的日期
<generator>否生成 feed 的程序名
<docs>否RSS 规范的 URL
<ttl>否缓存时间(分钟),告诉阅读器多久刷新

item 核心元素

元素必需说明
<title>是文章标题
<link>是文章 URL
<description>是文章摘要/全文
<author>否作者邮箱
<category>否文章分类
<pubDate>否发布日期
<guid>否全局唯一标识(用于去重)
<enclosure>否附件(如播客音频)

RFC 822 日期格式

pubDate: Wed, 10 Jun 2026 14:30:00 +0800

完整示例

场景说明

飞翔科技技术博客通过 RSS 向员工和外部读者推送最新文章。 小崔 负责生成和维护 RSS feed。他需要包含 100 字的文章描述,并展示"只发摘要"和"发全文"两种方式。

RSS 2.0 Feed

feixiang-blog.xml :

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
  <title>飞翔科技技术博客</title>
  <link>https://blog.feixiang.com</link>
  <description>飞翔科技技术团队的技术分享与项目总结</description>
  <language>zh-cn</language>
  <pubDate>Wed, 10 Jun 2026 09:00:00 +0800</pubDate>
  <lastBuildDate>Wed, 10 Jun 2026 09:00:00 +0800</lastBuildDate>
  <generator>Feixiang CMS v3.2</generator>
  <docs>https://www.rssboard.org/rss-specification</docs>
  <ttl>30</ttl>

  <!-- 文章1:只发摘要 -->
  <item>
    <title>智能工单系统 2.0 正式上线</title>
    <link>https://blog.feixiang.com/smart-ticket-2</link>
    <description>
      飞翔科技正式发布智能工单系统 2.0 版本,基于大语言模型实现自动化
      工单分类与派发,工单处理效率提升 300%。新版本引入知识图谱引擎,
      历史工单匹配准确率达到 92%。
    </description>
    <author>daxiang@feixiang.com(大翔)</author>
    <category>产品发布</category>
    <category>AI</category>
    <pubDate>Wed, 10 Jun 2026 08:00:00 +0800</pubDate>
    <guid isPermaLink="true">
      https://blog.feixiang.com/smart-ticket-2
    </guid>
  </item>

  <!-- 文章2:包含全文 -->
  <item>
    <title>微服务架构下的 XML 配置迁移指南</title>
    <link>https://blog.feixiang.com/xml-to-yaml</link>
    <description>
      白歌分享将 Spring XML 配置迁移到 YAML/注解的实战经验,
      涵盖 web.xml、pom.xml、Spring 配置的完整迁移路径。
    </description>
    <author>baige@feixiang.com(白歌)</author>
    <category>技术分享</category>
    <category>微服务</category>
    <pubDate>Tue, 09 Jun 2026 16:00:00 +0800</pubDate>
    <guid isPermaLink="true">
      https://blog.feixiang.com/xml-to-yaml
    </guid>
  </item>

  <!-- 文章3:带附件(播客音频) -->
  <item>
    <title>乐途技术播客 Vol.42 — 架构师对话</title>
    <link>https://blog.feixiang.com/podcast/42</link>
    <description>
      本期播客邀请到白歌和外部架构师,探讨分布式事务的最终一致性方案。
      时长:45 分钟。
    </description>
    <author>huangli@feixiang.com(黄俪)</author>
    <category>播客</category>
    <pubDate>Mon, 09 Jun 2026 10:00:00 +0800</pubDate>
    <enclosure
      url="https://cdn.feixiang.com/podcast/vol42.mp3"
      length="32400000"
      type="audio/mpeg"/>
    <guid isPermaLink="false">
      feixiang-podcast-vol42
    </guid>
  </item>
</channel>
</rss>

RSS 阅读器中的呈现

用户打开 RSS 阅读器(如 Feedly、Inoreader)后,看到:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
飞翔科技技术博客
飞翔科技技术团队的技术分享与项目总结
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

● 智能工单系统 2.0 正式上线              10 Jun 08:00
  飞翔科技正式发布智能工单系统 2.0 版本...

● 微服务架构下的 XML 配置迁移指南         09 Jun 16:00
  白歌分享将 Spring XML 配置迁移到 YAML/注解...

● 乐途技术播客 Vol.42 — 架构师对话 ▶     09 Jun 10:00
  本期播客邀请到白歌和外部架构师...

订阅方式

用户只需将 RSS feed URL(如 https://blog.feixiang.com/rss.xml)粘贴到阅读器中,即可完成订阅。阅读器会按 <ttl> 指定的间隔(本例中 30 分钟)自动拉取更新。

操作结果

传统浏览方式RSS 订阅方式
打开 10 个网站逐个检查更新打开阅读器,一切尽收眼底
错过更新,需要手动回溯自动追踪,时间线清晰
无法判断是否已读阅读器自动标记已读/未读
存储靠书签(分散)所有内容统一归档和搜索

易错场景

title/description 中放 HTML 不转义

<title>发布 <strong>新版本</strong></title>
<!-- 错误:<strong> 会破坏 XML -->

<description> 中如果包含 HTML,必须用 CDATA 包裹或转义 < 和 &:

<description><![CDATA[发布 <strong>新版本</strong>]]></description>

pubDate 格式错误

<pubDate>2026-06-10 08:00</pubDate>  <!-- 错误:不是 RFC 822 -->

RSS 2.0 严格要求 RFC 822 格式:Wed, 10 Jun 2026 08:00:00 +0800。

guid 去重失效

<guid isPermaLink="false">123</guid>  <!-- 太短,可能与其他源冲突 -->

guid 用于阅读器去重。如果多篇文章共用相同的 guid,阅读器会认为重复而只显示一篇。最佳实践:

  • 使用文章永久链接:<guid isPermaLink="true">https://blog.feixiang.com/article-123</guid>
  • 或用域名+文章ID组合:<guid isPermaLink="false">feixiang-blog-article-123</guid>

面试考点

考点参考答案要点
RSS 的全称和核心概念?Really Simple Syndication。核心是通过 XML feed 实现内容聚合——网站发布 feed,用户用阅读器订阅,自动拉取更新
RSS <channel> 的三个必选子元素?<title>(频道名)、<link>(网站URL)、<description>(频道描述)
<item> 的 <guid> 作用?全局唯一标识符,用于阅读器去重——同一篇文章不会重复显示
RSS 和 Atom 的区别?RSS 2.0 格式简单,兼容性好;Atom(IETF 标准)格式更严谨,支持更多内容类型。两者功能相似,但 Atom 可用作发布协议
上一页
WSDL 服务描述
下一页
RDF 资源描述框架