Vitor Mazuco Asked: 2015-02-04 07:47:45 +0800 CST2015-02-04 07:47:45 +0800 CST 2015-02-04 07:47:45 +0800 CST 如何将 CSV 文件转换为 XML? 772 如何将 CSV 文件转换为 XML? 有没有适用于 Ubuntu 的软件? conversion 5 个回答 Voted chaskes 2015-02-05T10:07:13+08:002015-02-05T10:07:13+08:00 当您知道文件的格式和csv文件中所需的结构时xml,制作一个可以处理转换的脚本就相当简单了。 拿文件simple.csv: Jack,35,United States Jill,22,United Kingdom 您可以创建以下xml文件: <?xml version="1.0"?> <Customers> <Customer> <Name>Jack</Name> <Age>35</Age> <Country>United States</Country> </Customer> <Customer> <Name>Jill</Name> <Age>22</Age> <Country>United Kingdom</Country> </Customer> </Customers> 使用以下脚本: #!/bin/bash file_in="simple.csv" file_out="simple.xml" echo '<?xml version="1.0"?>' > $file_out echo '<Customers>' >> $file_out while IFS=$',' read -r -a arry do echo ' <Customer>' >> $file_out echo ' <Name>'${arry[0]}'</Name>' >> $file_out echo ' <Age>'${arry[1]}'</Age>' >> $file_out echo ' <Country>'${arry[2]}'</Country>' >> $file_out echo ' </Customer>' >> $file_out done < $file_in echo '</Customers>' >> $file_out 即使您以前从未编码过,我认为这应该易于使用和修改。while该文件在循环中逐行读取。 IFS是内部字段说明符。IFS=$','声明字段分隔符的值为逗号。这是 CSV 文件的标准格式,但可以根据需要进行更改以匹配输入文件格式。 该命令的-r参数read告诉它将文件中的任何反斜杠视为数据的一部分,而不是作为后续特殊字符的转义符。 该-a arry参数将文件的每一列放入一个数组(名为arry)中。此示例中的列是姓名、年龄、国家/地区。换句话说,逗号之间的值。因此,该行中的每一列都存储在一个数组中。 然后所需的文本xml只是环绕在值周围,并将该xml行附加到带有echo. Best Answer Rinzwind 2015-02-04T07:55:04+08:002015-02-04T07:55:04+08:00 在有关转换的社区网站上,有一个指向名为csv2xml的命令行工具的链接。由于它没有维护,您可能想选择其他选项。 还提到了一个名为csv2xml的 java 工具(警告:网站是德语的)和一个名为ff-extractor的命令行工具。 该链接还引用了 Python、Perl、PHP、XSLT,但这意味着您需要自己编写转换器代码。 Dɑvïd 2018-09-20T03:26:41+08:002018-09-20T03:26:41+08:00 CSV 到 XML 转换挑战的一个相当用户友好的(即,对于像我这样的笨蛋来说很容易)解决方案是使用一个很好的跨平台XML 编辑器,它内置了这个特性。(我在 Ubuntu 和 Mac OSX 10.10.5 下都使用过它;它还有 Windows 可执行文件。) XML矛 如前所述,它是一个 XML 编辑器,但在其主菜单上包含 CSV-to-XML(和 Excel-to-XML)“导入”: 它在大约 15 秒内为我转换了一个 31Mb CSV 文件(从包含 20,000 个条目的图书馆数据库转储),为我提供了一个格式良好的 XML 文件来保存和操作。 作为编辑器,它还有许多其他受欢迎的功能(在上面的链接中有详细说明)。我找不到它的任何许可证,但这包含在“自述文件”中: XMLSpear 是供个人使用的免费软件。 请将您的反馈发送至 [email protected] 或论坛http://donkeydevelopment.com/forums。 商业使用必须得到donkeydevelopment的批准。 只需将主题为“许可请求”的电子邮件发送至 [email protected]。 自述文件还包含一个 .desktop 文件的内容。 在 Ubuntu 18.04 LTS (Gnome) 下工作对我来说很好吗? Thufir 2019-01-13T00:01:42+08:002019-01-13T00:01:42+08:00 我是它的忠实粉丝,BaseX它似乎具有导入功能: http://docs.basex.org/wiki/CSV_Module 可能会指出,使用 Web 应用程序似乎更容易: https://webapps.stackexchange.com/q/123959/24327 这相当于浏览器的插件或扩展,可与谷歌表格一起使用。 我感受到你的痛苦,因为它是一个看似简单的实用程序,应该可以通过 apt 获得。 Stefano Mtangoo 2019-01-13T01:23:22+08:002019-01-13T01:23:22+08:00 我建议您或其他人用 Python 编写代码。Python简单易学,轻松解决你的问题。它同时具有CSV 模块和XML 模块。我的建议考虑到您可能需要为 XML 元素命名或有其他复杂的要求(例如将最后一个 CSV 列转换为最后一列的属性)。 网上有大量关于 Python 的教程。
当您知道文件的格式和
csv
文件中所需的结构时xml
,制作一个可以处理转换的脚本就相当简单了。拿文件
simple.csv
:您可以创建以下
xml
文件:使用以下脚本:
即使您以前从未编码过,我认为这应该易于使用和修改。
while
该文件在循环中逐行读取。IFS
是内部字段说明符。IFS=$','
声明字段分隔符的值为逗号。这是 CSV 文件的标准格式,但可以根据需要进行更改以匹配输入文件格式。该命令的
-r
参数read
告诉它将文件中的任何反斜杠视为数据的一部分,而不是作为后续特殊字符的转义符。该
-a arry
参数将文件的每一列放入一个数组(名为arry
)中。此示例中的列是姓名、年龄、国家/地区。换句话说,逗号之间的值。因此,该行中的每一列都存储在一个数组中。然后所需的文本
xml
只是环绕在值周围,并将该xml
行附加到带有echo
.在有关转换的社区网站上,有一个指向名为csv2xml的命令行工具的链接。由于它没有维护,您可能想选择其他选项。
还提到了一个名为csv2xml的 java 工具(警告:网站是德语的)和一个名为ff-extractor的命令行工具。
该链接还引用了 Python、Perl、PHP、XSLT,但这意味着您需要自己编写转换器代码。
CSV 到 XML 转换挑战的一个相当用户友好的(即,对于像我这样的笨蛋来说很容易)解决方案是使用一个很好的跨平台XML 编辑器,它内置了这个特性。(我在 Ubuntu 和 Mac OSX 10.10.5 下都使用过它;它还有 Windows 可执行文件。)
XML矛
如前所述,它是一个 XML 编辑器,但在其主菜单上包含 CSV-to-XML(和 Excel-to-XML)“导入”:
它在大约 15 秒内为我转换了一个 31Mb CSV 文件(从包含 20,000 个条目的图书馆数据库转储),为我提供了一个格式良好的 XML 文件来保存和操作。
作为编辑器,它还有许多其他受欢迎的功能(在上面的链接中有详细说明)。我找不到它的任何许可证,但这包含在“自述文件”中:
自述文件还包含一个 .desktop 文件的内容。
在 Ubuntu 18.04 LTS (Gnome) 下工作对我来说很好吗?
我是它的忠实粉丝,
BaseX
它似乎具有导入功能:http://docs.basex.org/wiki/CSV_Module
可能会指出,使用 Web 应用程序似乎更容易:
https://webapps.stackexchange.com/q/123959/24327
这相当于浏览器的插件或扩展,可与谷歌表格一起使用。
我感受到你的痛苦,因为它是一个看似简单的实用程序,应该可以通过 apt 获得。
我建议您或其他人用 Python 编写代码。Python简单易学,轻松解决你的问题。它同时具有CSV 模块和XML 模块。我的建议考虑到您可能需要为 XML 元素命名或有其他复杂的要求(例如将最后一个 CSV 列转换为最后一列的属性)。
网上有大量关于 Python 的教程。