如何将CSV文件转换为XML?
Ubuntu是否有任何软件?
如何将CSV文件转换为XML?
Ubuntu是否有任何软件?
Answers:
在社区网站上进行转换时,有一个名为csv2xml的命令行工具的链接。由于未维护,您可能需要选择其他选项。
还提到了一个名为csv2xml的Java工具(警告:网站为德语)和一个名为ff-extractor的命令行工具。
该链接还引用了Python,Perl,PHP,XSLT,但这意味着您需要自己编写转换器的代码。
当您知道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
。
while IFS=$',' read -r -a arry
,则对于另一个选项很有用。谢谢。
"Somename, Jack"
中代替Jack
?
CSV到XML转换挑战的一种相当用户友好的(即,对于像我这样的小伙子来说很容易)的解决方案是使用一个内置了此功能的漂亮的跨平台 XML编辑器。(我在Ubuntu和Mac OSX 10.10.5下都使用过它;它也具有Windows可执行文件。)
如前所述,它是一个XML编辑器,但是在其主菜单上包括CSV到XML(和Excel到XML)“导入”:
它在大约15秒内为我转换了一个31Mb的CSV文件(从20,000个条目的库数据库中转储),从而为我提供了一个格式正确的XML文件以进行保存和操作。
作为编辑者,它还有许多其他受欢迎的功能(在上面的链接中有详细信息)。我找不到提及它的任何许可证,但这包含在“自述文件”中:
XMLSpear是供个人使用的免费软件。
请将您的反馈发送至xmlspear@donkeydevelopment.com或在论坛上http://donkeydevelopment.com/forums
。商业用途必须经驴开发批准。
只需将主题为“许可证请求”的电子邮件发送至xmlspear@donkeydevelopment.com。
自述文件还有助于包含.desktop文件的内容。
在Ubuntu 18.04 LTS(Gnome)下对我来说做得很好。
我非常喜欢BaseX
其中的一种导入功能:
http://docs.basex.org/wiki/CSV_Module
可能指出,使用Web应用程序似乎更容易:
https://webapps.stackexchange.com/q/123959/24327
相当于与Google表格兼容的浏览器插件或扩展程序。
我感到很痛苦,因为它是一个看似简单的实用程序,应该可以通过apt获得。