XML → CSV 转换器,免费

通过自动检测将 XML 数据转换为 CSV 格式。

没有数据离开您的设备

使用方法

  1. 在左侧区域粘贴或输入您的 XML 数据
  2. 工具会自动检测重复元素并扁平化嵌套结构。
  3. 在右侧预览您的数据。点击下载 CSV 保存转换后的文件。

常见问题

嵌套元素是如何处理的?

嵌套元素会使用点号标记扁平化。例如,「person.address.city」会成为单独的列标题。

如果元素拥有不同数量的子元素会怎样?

缺失值在 CSV 输出中留空。即使某些行缺少某些值,所有列标题也会保留。

工具如何检测重复元素?

工具会自动识别 XML 中最常见的元素类型,并将其用作行来源。

XML转CSV转换为何如此常见

XML冗长且层次化;CSV扁平且密集。现实中大量有用数据存储于XML格式中:sitemap.xml、RSS / Atom订阅源、WordPress导出文件、Apple plist配置、Maven pom.xml 依赖列表、GPS轨迹(GPX)、Google Earth地标(KML)、银行对账单格式(CAMT.053、MT940的XML形式)、电商产品供稿、医疗HL7 v3、XBRL财务报告、MusicXML乐谱,几乎所有这些数据都需要先展平为行才能分析。Excel、Google Sheets、SQL LOAD DATA、Pandas、R、Tableau、Power BI均可原生读取CSV;将XML导入这些工具意味着首先需要转换。

根本性的不匹配

XML允许任意嵌套;CSV是二维的。不存在通用的无损XML→CSV映射。任何转换器都必须对树的哪一层代表「行」以及如何处理更深的嵌套做出假设。两种常见形态:

该工具通过查找根元素最频繁的直接子元素来自动检测重复元素,这对约90%的真实XML供稿是正确的。如果您的XML不符合该模式,请先用快速的XPath脚本对其进行预处理或手动编辑为重复记录形态。

常见的转换效果好的XML供稿

属性、嵌套和重复子元素的处理方式

编码:Excel陷阱

XML通过 <?xml version="1.0" encoding="UTF-8"?> 声明其编码。CSV没有编码声明;读取方需要猜测。Windows上的Excel默认使用Windows-1252,因此在没有字节顺序标记的情况下打开UTF-8 CSV会显示乱码(é变为é,ü变为ü)。解决方案:要么在文件开头添加UTF-8 BOM(),使用Excel的「数据 → 从文本/CSV」导入向导并明确选择UTF-8,要么在Google Sheets中打开文件(无需BOM即可正确处理UTF-8)。

分隔符选择

根据RFC 4180,标准CSV分隔符是逗号。本工具还支持分号、制表符和管道符,请选择适合您受众的那个:

根据RFC 4180,包含所选分隔符、换行符或双引号的字段会自动用双引号括起;嵌入的双引号通过重复来转义。无论您选择哪种分隔符,相同的引用规则都适用。

隐私

XML载荷通常包含机密信息:银行对账单交易、内部员工数据、揭露内部URL的爬取站点地图、医疗记录、保密协议保护的产品目录。浏览器内置的 DOMParser 完全在您的标签页中运行,没有网络请求,没有服务器往返,没有日志记录。数据从剪贴板进入内存中的解析树,经过一次展平遍历,结果呈现在输出文本框中。如果您不点击「下载」,甚至不会写入磁盘。

常见错误

  1. 粘贴非重复记录形态的XML。单个配置文件等没有重复内容的文档无法展平为可用的CSV。转换器专为「类似项目列表」的XML设计。
  2. 期望属性前缀能完整保留。<product id="42"> 成为名为 id 的列,而非 product@idproduct.id。如果您在其他地方将CSV重新导入为XML,您需要重新映射。
  3. 为受众选择了错误的分隔符。在法语Excel安装中打开逗号CSV可能折叠为单列。请将分隔符与文件最终使用的目标匹配。
  4. 忘记为Excel添加UTF-8 BOM。在Windows Excel中,没有BOM时非拉丁字符会显示乱码。要么添加BOM,要么改用Google Sheets / 网页版Excel打开文件。
  5. 尝试转换XHTML或DocBook。混合内容文档XML不能干净地展平,对于这些格式请使用适当的XML/XSLT管道,而非表格转换器。
  6. 字段值中预存的CSV注入风险。如果您的XML包含用户生成的文本,并且您将在Excel或Sheets中打开输出,以 =+-@ 开头的单元格会被解释为公式。OWASP将其记录为真实的攻击类型,在分享用户生成内容的导出前请进行清理。
  7. 重复子元素。如果XML有 <tags> 包装器包含多个 <tag> 子元素,扁平输出无法干净地表示这一点。要么展平为每个标签一行(重复父字段),要么预处理XML将标签内联为分隔字符串。

更多常见问题

该工具会根据模式验证我的XML吗?

不会。它仅使用浏览器内置的 DOMParser 检查格式是否良好。如需XSD或RELAX NG验证,请使用专用工具,如 xmllint、Saxon或W3C XML模式验证器,格式良好性对于安全展平为CSV已足够。

我的XML可以有多大?

只要浏览器能承载,没有上限。由于没有服务器参与,没有服务器端限制。在现代设备上,数十兆字节的XML一两秒内即可转换。如果您有数百兆字节的XML,请在转换前分批拆分;通过单个浏览器标签页运行全部内容可能会遇到内存限制。

该工具是否处理XML命名空间?

是的,像 <atom:link> 这样的命名空间元素会被识别,前缀保留在列名中。如果您不希望CSV标题中有前缀,请对输出进行快速搜索和替换以删除它们。

我的XML会被上传到任何地方吗?

不会。所有解析和展平操作均通过内置的 DOMParser 在浏览器中进行。文本框内容不会被传输、记录或存储。标签页关闭后,数据即消失。

这与JSON转CSV工具有何区别?

目标相同(将层次数据展平为行),但输入格式不同。XML更冗长,允许属性,有命名空间,并为特殊字符使用实体引用。XML转CSV转换器专门处理这些特性;JSON转CSV转换器期望对象数组输入。如果您有JSON,请使用那个工具;如果您有XML,这个工具会给您更干净的结果。

我可以进行反向转换(CSV转XML)吗?

本工具不支持,但反向转换通常更简单:选择一个行元素名称,包装每一行,并将每列转换为子元素。使用 csv + xml.etree 的小型Python或Node脚本可以在20行内完成此操作。或使用Excel的Power Query等结构化数据工具,它可以按所选模式将CSV导出回XML。

相关工具

JSON → CSV 转换器,免费 JSON → YAML 转换器,免费 电子表格查看器,免费