跳到主要内容
PulsarKit

RSS订阅源转CSV

把订阅源、商品导出文件或RSS文件变成表格。重复出现的记录元素由工具自动找出,不需要写XPath。

把文件拖到这里

.xml, .rss, .xhtml, .txt · 最大300 MB

更多设置

如何转换为CSV

  1. 1

    拖入XML文件

    把.xml或.rss文件拖到页面上。文件会先经过校验,少了闭合标签时会报告行号和列号,而不是给出半张表。

  2. 2

    确认记录元素

    工具会找出重复的元素,并显示它包含多少条记录,比如rss.channel.item有四十条。如果这不是你想要的层级,就选另一个候选项。

  3. 3

    转换并下载CSV

    点击按钮,保存表格。

每一行是一篇文章,而不是一个标签

页面打开时,“重复元素”里已经填好rss.channel.item,这是RSS 2.0订阅源中文章所在的路径。XML转CSV的主页面则从auto开始。auto会选重复次数最多的元素,但它只看第一篇文章内部。WordPress订阅源默认包含10篇文章,文章的每个分类或标签都是一个category元素。2026年10月21日,我们试了一个10篇文章的订阅源,第一篇有12个标签。auto得到的是30行标签名;这个预设得到10行、15列。页面不会说明用了哪个路径,所以要数一数行数。

每篇文章会变成什么

文章的每个元素都会变成一列:title、link、pubDate、creator、category、guid、description和encoded。播客订阅源还会多出enclosure.@url、enclosure.@length和enclosure.@type。一篇文章的标签共用一个单元格,比如“园艺, 番茄, 种子”。在“更多设置”里选“每项一列”,每个标签就各占一列。日期保持订阅源里的写法:Mon, 19 Oct 2026 08:00:00 +0000。description和content:encoded里的HTML原样保留,包括…这样的实体。

WordPress订阅源里要注意的两件事

评论开放时,WordPress会给每篇文章一个comments链接和一个slash:comments计数。“去掉命名空间前缀”一开始是打开的,所以两者都变成comments,挤进同一个单元格:“…/#respond, 1”。在“更多设置”里关闭它,就能把两者分开;这时其他名称也会保留前缀,比如dc:creator。另一件事是长文章。2026年10月21日,WordPress News的订阅源有10篇文章、293 KB,0.14秒就变成了10行、11列。Microsoft规定Excel单元格最多容纳32,767个字符。其中两篇文章的HTML超过了这个上限,较长的一篇达到127,278个字符。

Atom订阅源、多个订阅源和结果

Atom订阅源把文章放在feed.entry下。在这里,它得到的回答是“这个XML没有重复的元素,无法生成行。”输入feed.entry或auto,再点击“重试”。Atom的链接和分类放在属性里:“合并到一个单元格”只会留下一个孤零零的逗号,“每项一列”则能保留它们。页面读取的是保存下来的.xml或.rss文件,而不是订阅源的网址。最多20个订阅源、总共300 MB,会打包成pulsarkit-batch.zip,每个订阅源一个CSV。不上传任何内容,CSV转Excel可以把CSV变成工作簿。

转换不需要上传

校验器、解析器和CSV写入器都是在当前浏览器标签页里运行的JavaScript。文档的任何部分都不会发送到服务器,也不会记入日志;断开网络,工具照样能用。为了在另一个工具中继续处理,PulsarKit可能会在这个浏览器中存储你的输入内容或结果的本地副本。关闭标签页或重启浏览器后,这份副本可能仍会保留。清除PulsarKit的网站数据即可删除它。

常见问题

工具怎么判断哪个元素是记录?

靠统计重复次数。工具检查深度六以内的每条路径,看有多少个同名的兄弟元素,数量最多的路径就是记录;两条路径数量相同时,更深的那条胜出。其他候选项连同数量一直显示在界面上;文档结构特殊时,也可以自己输入路径。

XML属性会放到哪里?

每个属性成为一列,列名带@前缀,所以id属性是@id,和名为id的子元素区分开。如果导出文件里有不需要的属性,把属性设置切换为跳过,就会全部去掉,表格也更窄。

记录里嵌套的元素会怎么处理?

它们会变成price.currency这样用点号连接名称的列,直到你设置的深度上限。超出上限的整棵子树以JSON形式写进一个单元格,数据还在,也不会生成成千上万个几乎为空的列。

为什么CSV开头有字节顺序标记(BOM)?

这样双击打开时Excel能认出文件是UTF-8,而不是猜成某个旧代码页,把带重音的字母或西里尔文弄成乱码。如果文件要交给不认这个标记的脚本或数据库导入程序,改一个设置就能输出不带BOM的UTF-8。

Excel把所有内容显示在一列里,哪里出错了?

文件本身没有问题。Excel按系统区域设置里的分隔符拆分,欧洲很多地区用的是分号。选择分号重新转换一次,或者对已有的文件使用“数据”里的“分列”功能。

RSS或Atom订阅源能转换吗?

能,这是最简单的情况。识别会自动落在rss.channel.item或对应的entry元素上,每个条目成为一行;去掉前缀后,Dublin Core或媒体标签这类带命名空间的扩展也会作为普通的列出现。

为什么以等号开头的值前面多了一个引号?

因为不这样做,电子表格会把它当成公式;来自不可信订阅源的值可以被特意构造成打开文件时执行命令。开头加一个撇号就能让它失效。-5这样的普通负数不受影响。

我的文件有DOCTYPE,被拒绝了,为什么?

声明了实体的DOCTYPE是有意拒绝的。嵌套的实体定义能展开成几GB的文本,让标签页卡死;外部实体还能去读取别处的文件。删掉DOCTYPE里的实体声明,文档就能正常转换。

相关工具