CSV转XML

在你的设备上运行 · 你的文件从不离开你的设备。

拖入或粘贴CSV,得到一个XML文档:外层<root>,每行一个<item>,每列一个以表头命名的子元素。分隔符自动识别(逗号、分号、制表符、竖线),带引号的字段按RFC 4180处理,UTF-8的BOM会被去掉。

XML不能用作元素名的列名——含空格、符号或以数字开头——会用下划线修正("Unit price"变成Unit_price),输出一定格式规范。值以文本写在元素里,不生成属性,任何解析器都容易处理。

下载前可以看到前200行的预览,转换完全在你的设备上进行。

如何CSV转XML

  1. 拖入CSV文件,或者粘贴CSV文本。
  2. 分隔符保持自动识别,或手动选择。
  3. 点击“转换为XML”,看一下预览。
  4. 下载.xml。

支持的格式与限制

输入
CSV/TSV——文件或粘贴的文本
输出
XML 1.0,UTF-8,<root><item>…</item></root>
解析
RFC 4180;分隔符自动识别
名字
表头修正为合法的元素名
运行位置
在浏览器本地完成,不上传

不适用于: 生成某种特定规范的XML(银行、税务或电商格式)——元素名来自你的表头,不来自任何规范。

值按CSV里的样子原样写出

XML把每个值都当作文本保存,所以识别数字或true、false没有任何好处,这个页面也不提供。每个值都按CSV里的写法写出:1.50还是1.50,1e3还是1e3,TRUE还是TRUE,单词NULL还是NULL。空单元格得到一个空元素,比如<note/>;前导零,比如007,也会保留。

表头名怎样变成元素名

先处理重复和空白的表头:两列都叫name,变成<name>和<name_2>;第三列表头空白,变成<column_3>。然后把每个名字改成XML合法的形式。Total (USD)变成Total__USD_,因为空格和括号都变成下划线;1st变成_1st。连字符和点是允许的,所以e-mail还是e-mail,address.city也还是一个叫这个名字的元素,不会拆成嵌套元素。任何文字的表头,比如阿拉伯文或中文,都原样保留。

两个表头最后变成同一个名字时,比如"a b"和"a_b",在每个<item>里都会写成<a_b>。按名字读取元素的程序可能只看到第一个,所以请先在CSV里把其中一个改名。

CSV是怎样读取的

文本按和CSV转JSON(/csv-to-json)相同的规则读取,那个页面用例子解释了这些规则:引号怎么用、分隔符怎么找、文件编码怎么识别,以及单元格比表头多或少的行会怎样。在XML里,缺少的单元格变成空元素。超出最后一个表头的单元格没有元素名,会被略去,提示会说明有多少行有这种情况、第一处在哪里。

<root>和<item>这两个名字是固定的。如果某个系统要求别的名字,比如<customers>和<customer>,下载后在文本编辑器里替换掉;结构的其他部分都不用改。

常见问题

我的文件会上传到服务器吗?
不会。转换完全在你的浏览器里完成,用的是你自己设备的算力。文件不会离开你的电脑或手机;每个工具用过一次之后,断网也照样能用。
XML的结构是什么样的?
先是XML声明,然后是<root>,每一行一个<item>,里面每列一个元素:<item><name>张伟</name><city>上海</city></item>。行元素固定叫item。
我的表头里有空格,有问题吗?
没有。名字会修正成XML允许的形式:空格和符号变成下划线,开头的数字前面加一个下划线。名字的其他部分不变。
能自动识别分隔符吗?
能——逗号、分号、制表符和竖线会在开头几行里逐个尝试,最一致的胜出。你也可以手动指定。

相关工具

表格与数据中的更多工具

本页的其他语言版本: English · العربية · Deutsch · Français · Español · Русский · Português · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা