CSVファイルをXMLに変換するにはどうすればよいですか?
Ubuntu用のソフトウェアはありますか?
community website 変換時に 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
ループで1行ずつ読み取られます。
IFS
は内部フィールド指定子です。 IFS=$','
は、フィールド区切り文字の値がコンマであることを宣言します。これはCSVファイルの標準ですが、入力ファイル形式に合わせて必要に応じて変更できます。
read
コマンドの-r
引数は、ファイル内のバックスラッシュを、後続の特殊文字のエスケープとしてではなく、データの一部として扱うように指示します。
-a arry
引数は、ファイルの各列を(arry
という名前の)配列に配置します。この例の列は、名前、年齢、国です。言い換えれば、コンマの間の値。そのため、行の各列は配列に格納されます。
次に、xml
に必要なテキストが値を囲むだけで、xml
行が出力ファイルにecho
で追加されます。
CSVからXMLへの変換の課題に対するかなりユーザーフレンドリーな(つまり、私のような数えやすい人にとって)ソリューションは、ニースcross-platformXMLエディターを使用することですこの機能が組み込まれています。 (UbuntuとMac OSX 10.10.5の両方で使用しましたが、Windows実行可能ファイルもあります。)
前述のように、これはXMLエディターですが、メインメニューにCSVからXML(およびExcelからXML)の「インポート」が含まれています。
約15秒で31MbのCSVファイル(20,000エントリのライブラリデータベースからのダンプ)を変換し、保存して操作するための整形式のXMLファイルを提供しました。
エディターとして、他の多くの歓迎機能があります(上記のリンクで詳しく説明しています)。ライセンスに関する言及はありませんが、これは「README」に含まれています。
XMLSpearは個人用のフリーソフトウェアです。
[email protected]またはフォーラムhttp://donkeydevelopment.com/forums
にフィードバックを送信してください。商用利用はロバ開発によって承認されなければなりません。
「ライセンス要求」という件名のメールを[email protected]に送信するだけです。
また、readmeには.desktopファイルの内容も含まれています。
Ubuntu 18.04 LTS(Gnome)の下で、私にとって仕事はうまくいきます。
私はBaseX
の大ファンです。これにはインポート機能があるようです。
http://docs.basex.org/wiki/CSV_Module
一見、Webアプリケーションを使用する方が簡単だと指摘するかもしれません。
https://webapps.stackexchange.com/q/123959/24327
これは、Googleシートで機能するブラウザのプラグインまたは拡張機能に相当します。
Aptを介して利用できるはずの、一見単純なユーティリティであるため、あなたの痛みを感じます。