跳到工具
ViewCSV
无需上传文件

CSV 转 XML

orders.csv· 示例数据15 行 · 8 列
值的写法
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>磊 黄</customer>
    <city>北京</city>
    <product>Coffee beans 1kg</product>
    <quantity>7</quantity>
    <unit_price>139.12</unit_price>
    <order_date>2026-01-27</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>杰 徐</customer>
    <city>北京</city>
    <product>Coffee beans 1kg</product>
    <quantity>2</quantity>
    <unit_price>132.10</unit_price>
    <order_date>2026-02-14</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>伟 孙</customer>
    <city>上海</city>
    <product>Notebook A5</product>
    <quantity>7</quantity>
    <unit_price>129.75</unit_price>
    <order_date>2026-03-22</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>敏 杨</customer>
    <city>上海</city>
    <product>Chair, ergonomic</product>
    <quantity>1</quantity>
    <unit_price>122.25</unit_price>
    <order_date>2026-04-25</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>静 王</customer>
    <city>成都</city>
    <product>Coffee beans 1kg</product>
    <quantity>9</quantity>
    <unit_price/>
    <order_date>2026-05-15</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>伟 黄</customer>
    <city>北京</city>
    <product>Desk lamp</product>
    <quantity>8</quantity>
    <unit_price>104.23</unit_price>
    <order_date>2026-06-06</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> 伟 吴 </customer>
    <city>成都</city>
    <product>USB-C cable</product>
    <quantity>5</quantity>
    <unit_price>225.65</unit_price>
    <order_date>2026-07-08</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>杰 李</customer>
    <city>南京</city>
    <product>Coffee beans 1kg</product>
    <quantity>7</quantity>
    <unit_price>74.98</unit_price>
    <order_date>2026-08-11</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>磊 王</customer>
    <city>南京</city>
    <product>Monitor 27"</product>
    <quantity>9</quantity>
    <unit_price>223.84</unit_price>
    <order_date>2026-09-22</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>艳 吴</customer>
    <city>南京</city>
    <product>Desk lamp</product>
    <quantity>3</quantity>
    <unit_price>91.94</unit_price>
    <order_date>2026-01-02</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>娜 刘</customer>
    <city>深圳</city>
    <product>Monitor 27"</product>
    <quantity>2</quantity>
    <unit_price>216.98</unit_price>
    <order_date>2026-02-18</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>磊 刘</customer>
    <city>上海</city>
    <product>Chair, ergonomic</product>
    <quantity>8</quantity>
    <unit_price>136.30</unit_price>
    <order_date>2026-03-22</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>静 张</customer>
    <city>北京</city>
    <product>Desk lamp</product>
    <quantity>4</quantity>
    <unit_price>238.82</unit_price>
    <order_date>2026-04-25</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>艳 陈</customer>
    <city>南京</city>
    <product>USB-C cable</product>
    <quantity>4</quantity>
    <unit_price>95.92</unit_price>
    <order_date>2026-05-21</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>伟 孙</customer>
    <city>上海</city>
    <product>Notebook A5</product>
    <quantity>7</quantity>
    <unit_price>129.75</unit_price>
    <order_date>2026-03-22</order_date>
    <status>pending</status>
  </row>
</rows>

15 行 · 1 个文件

打开或粘贴 CSV 文件,即可得到格式良好的 XML:一个根元素,每条记录一个行元素,每个值写成子元素或属性。不是合法 XML 名称的表头(例如 Order ID 或 2024 total)会被重命名,所有重命名都会列出来。文件在你的浏览器中转换,不会上传。

如何把 CSV 转换为 XML

  1. 点击 打开文件,把 .csv、.tsv 或 .txt 文件拖到工具上,或选择 粘贴。如果列看起来不对,请在 导入设置 中检查分隔符和编码。
  2. 按接收系统的要求填写 根元素 和 行元素 的名称(默认为 rows 和 row)。
  3. 选择 值的写法、空值的处理方式、缩进 以及是否添加声明,然后点击 复制 或 下载 XML。

如果读取文件的系统要求特定的标签名,请先用 重命名和调整 CSV 列顺序 修改 CSV 列名,这样就不需要自动重命名了。

XML 结构选项

子元素默认选项:<row><Customer>Smith &amp; Sons</Customer>…</row>。保留值内的换行,适合大多数导入工具。
属性每行一个自闭合元素:<row Customer="Smith &amp; Sons" …/>。更紧凑;值内的制表符和换行会写成 &#9;、&#10; 和 &#13;,让解析器能保留它们。
省略空值默认关闭,所以空单元格会变成空元素,例如 <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/>。

CSV
Order ID,Customer,Total (EUR),Ship date
10071,"Smith & Sons",249.00,2025-02-03
10072,"Café <Lumière>",18.50,
XML
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <Order_ID>10071</Order_ID>
    <Customer>Smith &amp; Sons</Customer>
    <Total__EUR_>249.00</Total__EUR_>
    <Ship_date>2025-02-03</Ship_date>
  </row>
  <row>
    <Order_ID>10072</Order_ID>
    <Customer>Café &lt;Lumière&gt;</Customer>
    <Total__EUR_>18.50</Total__EUR_>
    <Ship_date/>
  </row>
</rows>

常见问题

为什么我的列名被改了?

XML 元素名不能包含空格和大多数标点,不能以数字开头,也不能以 xml 开头。转换器只做最小的改动,让名称合法且不重复,并列出每一处修改。

应该用子元素还是属性?

除非接收系统要求使用属性,否则请使用子元素。子元素按原样保留换行;而 XML 解析器会对属性值中的空白做规范化处理,所以转换器会把制表符和换行编码为字符引用。

数字或日期会带上类型吗?

不会。XML 没有内置的值类型,所以每个值都按 CSV 中的文本写出。类型由 Schema 或读取文件的程序决定。

标准与参考资料