Bagaimana saya bisa mengkonversi file CSV ke XML?
Apakah ada perangkat lunak untuk Ubuntu?
Bagaimana saya bisa mengkonversi file CSV ke XML?
Apakah ada perangkat lunak untuk Ubuntu?
Jawaban:
Di situs komunitas tentang konversi ada tautan ke alat baris perintah yang disebut csv2xml . Karena tidak terawat, Anda mungkin ingin memilih opsi lain.
Ada juga menyebutkan alat java yang disebut csv2xml (peringatan: situs web dalam bahasa Jerman) dan alat baris perintah yang disebut ff-extractor .
Tautan ini juga memiliki referensi ke Python, Perl, PHP, XSLT tetapi itu berarti Anda harus mengkodekan konverter sendiri.
Ketika Anda mengetahui format csv
file dan struktur yang Anda butuhkan dalam xml
file tersebut, cukup mudah untuk membuat skrip yang dapat menangani konversi.
Ambil file simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Anda dapat membuat xml
file berikut :
<?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>
Dengan skrip berikut:
#!/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
Bahkan jika Anda belum pernah berkode sebelumnya, saya pikir ini harus mudah digunakan dan dimodifikasi. File dibaca baris demi baris dalam while
loop.
IFS
adalah specifier bidang internal. Yang IFS=$','
menyatakan bahwa nilai pemisah bidang adalah koma. Ini standar untuk file CSV, tetapi dapat diubah sesuai kebutuhan untuk mencocokkan format file input.
The -r
argumen ke read
perintah mengatakan itu untuk mengobati backslashes dalam file Anda sebagai bagian dari data Anda daripada sebagai pelarian untuk karakter khusus berikut.
The -a arry
Argumen menempatkan setiap kolom file Anda ke dalam sebuah array (bernama arry
). Kolom dalam contoh ini adalah nama, umur, negara. Dengan kata lain nilai-nilai di antara koma. Jadi setiap kolom di baris disimpan dalam array.
Kemudian teks yang diperlukan untuk xml
hanya melilit nilai-nilai dan xml
baris ditambahkan ke file output dengan echo
.
while IFS=$',' read -r -a arry
, itu berguna untuk yang lain. Terima kasih.
"Somename, Jack"
tempat Jack
dalam file input?
Solusi yang cukup ramah pengguna (yaitu, mudah untuk numpties seperti saya) untuk tantangan konversi CSV ke XML adalah dengan menggunakan editor XML lintas-platform yang bagus yang memiliki fitur bawaan . (Saya sudah menggunakannya di Ubuntu dan Mac OSX 10.10.5; ini juga memiliki Windows yang dapat dieksekusi.)
Seperti yang disebutkan, ini adalah editor XML, tetapi termasuk "impor" CSV-to-XML (dan Excel-to-XML) pada menu utamanya:
Itu dikonversi file CSV 31Mb untuk saya (dump dari database perpustakaan 20.000 entri) dalam waktu sekitar 15 detik, memberi saya file XML yang terbentuk dengan baik untuk menyimpan dan memanipulasi.
Sebagai editor, ia memiliki banyak fitur sambutan lainnya (dirinci di tautan, di atas). Saya tidak dapat menemukan penyebutan lisensi untuk itu, tetapi ini termasuk dalam "README":
XMLSpear adalah perangkat lunak gratis untuk penggunaan pribadi.
Silakan kirim umpan balik Anda ke xmlspear@donkeydevelopment.com atau di forumhttp://donkeydevelopment.com/forums
.Penggunaan komersial harus disetujui oleh pengembangan donkey.
Cukup kirim email ke xmlspear@donkeydevelopment.com dengan subjek "permintaan lisensi".
Readme juga membantu menyertakan konten untuk file .desktop.
Melakukan pekerjaan dengan baik untuk saya di bawah Ubuntu 18.04 LTS (Gnome).
Saya penggemar berat BaseX
yang tampaknya memiliki kemampuan impor:
http://docs.basex.org/wiki/CSV_Module
Mungkin menunjukkan bahwa tampaknya, lebih mudah untuk menggunakan aplikasi web:
https://webapps.stackexchange.com/q/123959/24327
Yang berarti plugin atau ekstensi ke browser yang bekerja dengan lembar google.
Saya merasakan rasa sakit Anda karena ini adalah utilitas yang tampaknya sederhana yang seharusnya tersedia melalui apt.
Saya menyarankan Anda atau seseorang menulis kode dengan Python. Python mudah dipelajari dan menyelesaikan masalah Anda dengan mudah. Ini memiliki modul CSV dan modul XML . Saran saya mempertimbangkan bahwa Anda mungkin perlu memiliki nama Anda sendiri untuk elemen XML atau memiliki persyaratan kompleks lainnya (seperti mengubah kolom CSV terakhir menjadi atribut kolom terakhir tetapi satu).
Ada banyak tutorial online tentang Python.