RSS订阅源XML制作须严格遵循RSS 2.0规范:首行声明UTF-8编码,根元素为,唯一内含title、link、description三要素,每需含title、link、description、pubDate(RFC 822格式)、guid(推荐isPermaLink="true"),动态生成时注意转义与MIME类型配置。

RSS订阅源XML格式制作核心是严格遵循RSS 2.0规范:以为根,内嵌唯一,再逐条添加。关键不在于写得多,而在于必填字段齐、编码对、结构稳、日期合规。
RSS 2.0必须满足的基础结构
RSS文档本质是符合XML 1.0标准的文本文件,必须包含以下硬性要素:
-
声明行:首行必须是
,编码强制用UTF-8,否则中文会乱码 -
根元素:
——version属性值只能是"2.0",不可省略引号或写成2.0.1等 -
频道容器:
是下唯一的直接子元素,且只能有一个 -
频道三要素:每个
内必须含、、,缺一不可
每个- 条目应包含的关键字段
每篇内容对应一个,放在内部。基础可用字段如下:
-
标题:
——用户在阅读器里最先看到的文字,建议简洁明确 -
链接:
——指向原文网页的完整URL(如https://example.com/post/123),必须可访问 -
描述:
——支持HTML标签(如),但需做XML转义(zuojiankuohaophpcn代替) -
发布时间:
——必须用RFC 822格式,例如Sun, 15 Dec 2025 09:30:45 +0800,不能用YYYY-MM-DD -
唯一标识:
——推荐设为原文URL并加isPermaLink="true",如https://example.com/post/123
动态生成RSS的实用要点
静态写死XML适合测试,真实站点需从数据库实时生成。常见做法有:
- PHP中用
SimpleXMLElement或DOMDocument构建节点,输出前设置header('Content-Type: application/rss+xml') - Python可用
feedparser反向验证,或用xml.etree.ElementTree拼装,注意encoding="utf-8"和换行缩进非必需但利于调试 - 数据库查最新N条记录后,循环生成
,确保字段已按RFC 822格式转换(PHP用date('r', $timestamp),Python用email.utils.formatdate()) - 避免在XML中直接插入未过滤的用户输入,防止标签注入;描述内容中的双引号、尖括号要实体化(
"、zuojiankuohaophpcn)
验证与部署注意事项
生成后别急着上线,先做三件事:
- 用浏览器直接打开XML文件,看是否报错(XML解析失败说明结构或编码有误)
- 提交到W3C Feed Validator检测合规性,重点关注
pubDate格式、guid重复、缺失必填项 - 部署时确保Web服务器将
.xml文件返回application/rss+xmlMIME类型(Apache加AddType application/rss+xml .xml,Nginx配types{ application/rss+xml xml; })










