CodeKitHub
JSON 工具

CSV 与 XML 互转工具

最后更新:

要把 CSV 转换成 XML,每一行会变成一个 <row> 元素,每一列会变成以其表头命名的子标签——反向转换则会针对 XML 中出现的每一个不同的子标签名提取出一列。粘贴任意一种格式,选择你需要的转换方向即可。全程本地运行,数据不会离开你的设备。

工具介绍

有些系统(老旧的企业软件、部分基于 SOAP 的接口、类 RSS 数据源)要求数据是 XML 格式,而表格软件和大多数数据导入工具要的是 CSV。这个工具在两种格式之间搬运数据:CSV → XML 会把每一行包在根元素 <rows> 内的一个 <row> 元素里,每一列变成以表头命名的子标签;XML → CSV 则反过来,把每一种出现过的子标签名提取为一列。

CSV 一侧使用正规的带引号字段解析器(不是简单按逗号拆分),能正确处理包含逗号、换行或内嵌引号的值。XML 一侧使用浏览器原生的 DOMParser 接口来解析——这正是浏览器内部解析 XML 文档时用的同一套机制,而不是手写的基于正则表达式的读取逻辑,所以嵌套标签和标准 XML 转义都会按照真正的 XML 解析器的方式处理。

生成 XML 时,不符合 XML 元素命名规则的列名/标签名(比如含空格、以数字开头)会被自动清理,因为 XML 元素名的规则比 CSV 表头要严格得多。

来源:CSV 解析遵循 RFC 4180;XML 结构遵循 W3C XML 1.0 规范

为什么使用它?

  • 支持双向转换——CSV 转 XML、XML 转 CSV,一个工具搞定。
  • 正确的 CSV 解析——能处理带逗号、换行和转义引号的引号字段,而不只是简单按逗号拆分。
  • 基于标准的 XML 解析——XML → CSV 使用浏览器内置的 DOMParser,而不是自定义正则解析器,格式错误的 XML 会被报告为错误,而不是悄悄产生乱码。
  • 自动 XML 转义——CSV 值里的 & 和 < 等特殊字符在生成 XML 时会被正确转义。
  • 100% 本地运行——你粘贴的任何内容都不会被上传到服务器。

使用方法

  1. 在输入框里粘贴带表头行的 CSV 数据,或粘贴 XML 数据。
  2. 点击"CSV → XML"生成 XML,或点击"XML → CSV"把 XML 转换回表格。
  3. 查看输出结果——复制它,或下载为文件。
  4. 对于 CSV → XML,每一行会变成一个 <row> 元素,每一列对应一个子标签,整体包在根元素 <rows> 里。

示例

输入

name,age
Alice,30
Bob,25

输出

<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <name>Alice</name>
    <age>30</age>
  </row>
  <row>
    <name>Bob</name>
    <age>25</age>
  </row>
</rows>

每一行 CSV 变成一个 <row> 元素,每一列变成以表头命名的子标签——把这段 XML 再用"XML → CSV"转换一次,就能还原出原来的两列表格。

实用建议

  • 对接需要 XML 格式的老旧系统或 SOAP 接口:先在这里把 CSV 导出内容转换成 XML,再把结果直接粘贴到目标系统里。
  • 核查收到的 XML 导出文件:用 XML → CSV 快速得到一个易读的表格视图,不需要打开完整的 XML 编辑器。
  • 如果你的 XML 是深层嵌套结构,而不是扁平的 <row><column> 结构,这个工具不会展开任意层级的嵌套——它期望的是单层的行元素,每个行元素里包含简单的列元素。

为什么用 DOMParser 而不是手写的 XML 读取器

XML 有真正的结构性规则——嵌套元素、属性引号、& < > 等字符的转义等等——一个简单的基于正则表达式的解析器,除了处理最简单的输入外,往往会在细节上出错。使用浏览器内置的 DOMParser 接口,意味着这个工具依赖的是浏览器本身用来渲染 XML 文档的同一套符合标准的 XML 引擎,而不是从零重新实现一套 XML 解析逻辑。这也意味着格式错误的 XML——比如未闭合的标签、多余的尖括号——会明确报错,而不是悄悄产生损坏或不完整的 CSV。

常见问题

能正确处理值里带逗号或引号的 CSV 吗?

可以。CSV 解析器是一个真正的状态机解析器,会跟踪当前是否处于引号字段内部,所以引号内的逗号和换行(比如 "Smith, John")以及用双写引号来转义字面引号字符的情况,都能被正确处理——它不会简单地按每个逗号拆分。

XML 是怎么解析的——是自定义的正则解析器吗?

不是。XML → CSV 使用浏览器内置的 DOMParser 接口,把 XML 解析成真正的文档树,和浏览器解析任何 XML 文档的方式一样。这意味着格式错误的 XML 会被检测出来并报告为错误,而不是像手写的正则解析器那样悄悄产生错误的输出。

不符合 XML 标签命名规则的列名会怎么处理?

除字母、数字、下划线、连字符和句点以外的字符都会被替换成下划线;如果名字本来会以数字或标点开头,会自动加上前导下划线——因为 XML 元素名不能像 CSV 表头那样以数字开头或包含空格。

我的数据会被上传到服务器吗?

不会。两个方向的转换都完全通过浏览器里的 JavaScript 完成,使用的是浏览器自带的 XML 解析引擎——不会发送到任何地方,可以放心用于导出的业务或客户数据。

CSV → XML → CSV 这样转两次,能完全还原原始数据吗?

对于列结构一致、格式良好的 CSV,可以——数据值在往返转换中会被保留。但如果原始 CSV 各行的列不一致,或表头名称里有特殊字符,清理后的标签名可能无法完全保留原始表头的确切拼写,不过数据值本身不会受影响。

相关工具