如何将 CSV 文件转换为 XML?

Vit*_*uco 8 conversion xml csv

如何将 CSV 文件转换为 XML?

有没有适合 Ubuntu 的软件?

cha*_*kes 10

当您知道csv文件的格式和文件中所需的结构时xml,制作一个可以处理转换的脚本就相当简单了。

拿文件simple.csv

Jack,35,United States
Jill,22,United Kingdom
Run Code Online (Sandbox Code Playgroud)

您可以创建以下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>
Run Code Online (Sandbox Code Playgroud)

使用以下脚本:

#!/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
Run Code Online (Sandbox Code Playgroud)

即使您以前从未编码过,我认为这应该易于使用和修改。在while循环中逐行读取文件。

IFS是内部字段说明符。该IFS=$','声明字段分隔符的值是一个逗号。这是 CSV 文件的标准,但可以根据需要进行更改以匹配输入文件格式。

命令的-r参数read告诉它将文件中的任何反斜杠视为数据的一部分,而不是作为后续特殊字符的转义符。

-a arry参数将文件的每一列放入一个数组(名为arry)。此示例中的列是姓名、年龄、国家/地区。换句话说,逗号之间的值。因此该行中的每一列都存储在一个数组中。

然后所需的文本就xml被包裹在值周围,并且该xml行被附加到输出文件中echo


Rin*_*ind 7

在有关转换的社区网站上,有一个指向名为csv2xml的命令行工具的链接。由于它是无人维护的,您可能需要选择其他选项。

还提到了一个名为csv2xml的 Java 工具(警告:网站是德语)和一个名为ff-extractor的命令行工具。

该链接还引用了 Python、Perl、PHP、XSLT,但这意味着您需要自己编写转换器代码。