打开或粘贴 CSV 文件,即可得到格式良好的 XML:一个根元素,每条记录一个行元素,每个值写成子元素或属性。不是合法 XML 名称的表头(例如 Order ID 或 2024 total)会被重命名,所有重命名都会列出来。文件在你的浏览器中转换,不会上传。
如何把 CSV 转换为 XML
- 点击 打开文件,把
.csv、.tsv或.txt文件拖到工具上,或选择 粘贴。如果列看起来不对,请在 导入设置 中检查分隔符和编码。 - 按接收系统的要求填写 根元素 和 行元素 的名称(默认为
rows和row)。 - 选择 值的写法、空值的处理方式、缩进 以及是否添加声明,然后点击 复制 或 下载 XML。
如果读取文件的系统要求特定的标签名,请先用 重命名和调整 CSV 列顺序 修改 CSV 列名,这样就不需要自动重命名了。
XML 结构选项
| 子元素 | 默认选项:<row><Customer>Smith & Sons</Customer>…</row>。保留值内的换行,适合大多数导入工具。 |
|---|---|
| 属性 | 每行一个自闭合元素:<row Customer="Smith & Sons" …/>。更紧凑;值内的制表符和换行会写成 	、 和 ,让解析器能保留它们。 |
| 省略空值 | 默认关闭,所以空单元格会变成空元素,例如 <Ship_date/>。开启后,该行中会省略这个元素或属性。 |
| 缩进 | 2 个空格(默认)、4 个空格 或 无(压缩);选择无时,整个文档写在一行内。 |
| 添加 XML 声明 | 默认开启:第一行是 <?xml version="1.0" encoding="UTF-8"?>。如果 XML 要嵌入到另一个文档中,请关闭它。 |
根元素名和行元素名遵循与表头相同的命名规则;留空或无效时,会退回到 rows 或 row,或者加上下划线前缀。
列名如何变成 XML 名称
- 空格变成
_,字母、数字、.、-和_以外的字符也都变成_:Total (EUR)→Total__EUR_,e-mail:work→e-mail_work。冒号会被替换,所以不会产生命名空间前缀。 - 以数字、
.或-开头的名称会加上下划线前缀(2024 total→_2024_total);以xml开头(不论大小写)的名称也一样,因为 XML 保留了这个前缀(xml_ref→_xml_ref)。 - 如果两个表头最终得到相同的名称,第二个会加上
_2(a b和a_b→a_b、a_b_2)。XML 名称区分大小写,所以Name和name仍是不同的名称。 - 各种文字的字母都会保留:
Größe和価格都是合法的 XML 名称,中文列名同样可以直接使用。空白表头先变成Column 7,再变成Column_7。 - 每个重命名都会以
old → new的形式列在选项下方,预览上方的提示会给出重命名的数量。
值如何写出
- 元素文本中的
&、<和>会被转义;属性中还会转义"。除此之外,值完全按 CSV 中的写法写出:00731保留前导零,也不会猜测任何类型。 - XML 1.0 禁止大多数控制字符(U+0000–U+001F 中除制表符、换行符和回车符以外的字符)、U+FFFE、U+FFFF 以及未配对的代理项,即使转义也不行。这些字符会被删除,并显示受影响的值的数量。
- 带引号的逗号、引号和换行按 RFC 4180 读取;在子元素中,换行仍是真正的换行。
- 输出始终为 UTF-8 编码。
XML 解析器或导入程序拒绝文件时
- 导入工具找不到某个字段。 它很可能被重命名了。请查看选项下方的列表,然后在 CSV 中重命名该列,或调整接收系统中的映射。
- 解析器报告编码错误。 请在导入设置中按源文件的真实编码打开它(中文 Windows 版 Excel 保存的文件通常选 GB18030);只有 CSV 被正确解码,XML 才是正确的 UTF-8。
- 所有内容都在一个元素里。 分隔符识别错了;请在导入设置中选择逗号、分号、制表符或竖线。
- 我需要 CDATA、命名空间或 Schema。 转换器只写出普通的元素和属性;这些内容请在后续步骤中添加。
限制与隐私
25 MB、10 万行或 200 万个单元格以内的文件可实时预览前 200 行。更大的文件以流式方式转换:文件分块读取两遍(第一遍测量各列,第二遍写出),提示会说明下载内容包含整个文件,并且不提供 复制。单个输出文件最大 4 GB。
转换在当前标签页的后台线程中进行,所以页面保持流畅,点击 取消 即可停止。CSV 文件不会发送到任何服务器。
示例:一份表头需要重命名的订单导出文件
一份订单导出,表头中有空格和括号,数据中有 & 符号、尖括号和一个空日期,使用默认设置转换。有三个表头被重命名;空的 Ship date 变成了 <Ship_date/>。
Order ID,Customer,Total (EUR),Ship date 10071,"Smith & Sons",249.00,2025-02-03 10072,"Café <Lumière>",18.50,
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<Order_ID>10071</Order_ID>
<Customer>Smith & Sons</Customer>
<Total__EUR_>249.00</Total__EUR_>
<Ship_date>2025-02-03</Ship_date>
</row>
<row>
<Order_ID>10072</Order_ID>
<Customer>Café <Lumière></Customer>
<Total__EUR_>18.50</Total__EUR_>
<Ship_date/>
</row>
</rows>常见问题
为什么我的列名被改了?
XML 元素名不能包含空格和大多数标点,不能以数字开头,也不能以 xml 开头。转换器只做最小的改动,让名称合法且不重复,并列出每一处修改。
应该用子元素还是属性?
除非接收系统要求使用属性,否则请使用子元素。子元素按原样保留换行;而 XML 解析器会对属性值中的空白做规范化处理,所以转换器会把制表符和换行编码为字符引用。
数字或日期会带上类型吗?
不会。XML 没有内置的值类型,所以每个值都按 CSV 中的文本写出。类型由 Schema 或读取文件的程序决定。