CSV 转 XML — 在浏览器中将 CSV 数据转为 XML
在浏览器中将 CSV 数据转换为 XML。根元素与行元素名称可配置,可选属性映射。完全在本地运行 —— 无上传、无限制。
CSV 转 XML 是较老的数据转换杂活之一,可以追溯到 XML 作为默认交换格式的年代 —— 从 SOAP API 到 RSS feed 再到 Office 文档,无处不在。转换本身是机械的:CSV 的每一行变成一个 <row> 元素,每一列表头变成一个子元素(或属性)名,每个单元格值变成文本内容 —— 但输出格式的可配置项会显著影响下游消费者。有的 XML schema 期望属性(<row name="Alice" age="30"/>),有的期望子元素(<row><name>Alice</name><age>30</age></row>),有的要求特定的根元素名,有的需要命名空间。工具把这些选项直接暴露出来,让输出一次就对上目标 schema。
转换里「不那么显然」的一点是 XML 转义。CSV 单元格可以包含任意字符,包括 <、>、& 以及引号字符,这些在 XML 中都有特殊含义。一种朴素的字符串拼接把每个单元格包进 <name>VALUE</name>,如果值里含有 <,就会生成残缺的 XML —— 解析器会看到一个未闭合的标签并报错。工具会自动转义这五个 XML 特殊字符(<、>、&、'、"),产出的 XML 能被任何解析器原样读回原始的 CSV 值。这里不采用 CDATA 段,因为它只是「转义失败」的补丁,不是「正确转义」的替代。
最后的交接建议:如果目标是期待 XML 的 SOAP 或 REST API,先确认 schema 的 element-vs-attribute 约定再生成 —— 选错了会产生能解析但校验失败的输出。如果目标是关系型数据库,CSV-to-XML 是错误的方向;绝大多数数据库可以直接通过 bulk import 接收 CSV。如果目标是 feed(RSS、Atom、sitemap),XML 风格是固定的,可能更值得用专门的 feed 生成器,而不是通用的 CSV-to-XML 工具。本工具的定位是 schema 简单、消费者是通用 XML 解析器的临时 XML 输出。
使用方法
粘贴你的 CSV 数据
把 CSV 拖入输入框,或加载一个 .csv 文件。工具会自动检测分隔符(逗号、分号、制表符)以及是否存在 UTF-8 BOM。第一行默认被当作表头。
配置 XML 结构
选择根元素名称(容器,默认 `<rows>`)与行元素名称(每条记录,默认 `<row>`)。也可以选择把表头列映射为 XML 属性,而不是子元素。
复制或下载 XML
把 XML 复制到剪贴板,或下载为 .xml 文件。输出是一份独立的 XML 文档,带标准的 `<?xml version="1.0"?>` 声明与 UTF-8 编码。
常见问题
可以使用任意分隔符吗?
可以 —— 自动检测会扫描前几 KB,在逗号、分号、制表符与竖线之间做出选择。如果遇到非标准输入,自动检测选错了,也可以在设置里强制指定分隔符。
属性与子元素有什么区别?
属性式行看起来像 `<row name="Alice" age="30"/>`;子元素式行看起来像 `<row><name>Alice</name><age>30</age></row>`。属性更紧凑;子元素将来更容易扩展嵌套数据。
XML 特殊字符如何转义?
工具会自动转义 `<`、`>`、`&`、`'`、`"`。CSV 单元格里的 `A & B` 在 XML 中会变成 `A & B`,任何 XML 解析器读回来都是原始的 `A & B`。这里不采用 CDATA 段;实体转义才是标准做法。
能添加 schema 引用吗?
可以 ——「XSD reference」字段可以在根元素上加一个 `xsi:noNamespaceSchemaLocation` 属性,指向某个 .xsd 文件。引用会被加进去,但不会校验。如果 schema 合规很重要,请配合单独的 XML 校验器一起使用。
第一行会变成 schema 吗?
会 —— CSV 的第一行被当作字段名。每个字段名成为每一行里的一个 XML 元素(或属性)。如果 CSV 没有表头,切换到「无表头」选项,字段名会变成通用的 `field1`、`field2` 等等。
限制说明
- 不支持嵌套结构CSV 是一张扁平网格,输出的 XML 也是扁平的 —— 每一行字段相同,无法表达嵌套对象或数组。需要层级数据时,请改用 JSON 或 YAML 作为起点。
- 默认不含命名空间输出不使用 XML 命名空间。如果目标 schema 要求命名空间(多数 SOAP、RSS 与 Atom feed 都是),转换后请手动添加。工具按你选择的名称标注根元素,并接受任何前缀。
- 不生成 DTD 或 XSD工具不会生成 Document Type Definition 或 XML Schema。如需 schema,请从 CSV 表头手动推导,或用单独的工具从样本 XML 生成 XSD。
平台说明
- macOS
- 命令行场景下,`xmlstarlet` 配一段小脚本就能把 CSV 转成 XML。如果只是偶尔做一次转换,为这点事 Homebrew 装 xmlstarlet 不值得,浏览器工具更顺手。
- Windows
- PowerShell 的 `Import-Csv` 与 `Export-Clixml` 能应付只跑 PowerShell 的工作流。浏览器工具的强项是输出跨平台的 XML —— 任何 XML 解析器都能读,不只是 PowerShell。
- Linux
- 最接近的命令行等价是 `python3 -c "import csv, xml.etree.ElementTree as ET; ..."` —— 一段 5 行的脚本就能完成转换。内容来自聊天、邮件或文档页的临时转换,浏览器工具更顺手。
- Web
- 完全在客户端运行,页面加载完后可以离线使用。XML 输出是可移植的 —— 可以直接接入任意 XML 解析器、XSLT 转换器或 schema 校验器,没有任何依赖。