Come posso convertire un file CSV in XML?
Esiste un software per Ubuntu?
Come posso convertire un file CSV in XML?
Esiste un software per Ubuntu?
Risposte:
Sul sito Web della comunità sulla conversione è presente un collegamento a uno strumento da riga di comando chiamato csv2xml . Poiché non viene mantenuto, potresti voler scegliere un'altra opzione.
Si parla anche di uno strumento java chiamato csv2xml (attenzione: il sito Web è in tedesco) e uno strumento da riga di comando chiamato ff-extractor .
Il collegamento ha anche riferimenti a Python, Perl, PHP, XSLT ma ciò significa che è necessario codificare il convertitore da soli.
Quando conosci il formato del csv
file e la struttura di cui hai bisogno nel xml
file, è abbastanza semplice creare uno script in grado di gestire la conversione.
Prendi il file simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
È possibile creare il seguente xml
file:
<?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>
Con il seguente script:
#!/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
Anche se non hai mai codificato prima, penso che questo dovrebbe essere facile da usare e modificare. Il file viene letto riga per riga nel while
ciclo.
IFS
è l'identificatore di campo interno. L' IFS=$','
dichiara che il valore del separatore di campo è una virgola. Questo è standard per un file CSV, ma può essere modificato in base alle esigenze per adattarsi al formato del file di input.
L' -r
argomento del read
comando indica che le barre rovesciate nel file vengono trattate come parte dei dati anziché come una fuga per un carattere speciale seguente.
L' -a arry
argomento inserisce ciascuna colonna del file in un array (denominato arry
). Le colonne in questo esempio sono nome, età, paese. In altre parole, i valori tra le virgole. Quindi ogni colonna nella riga è memorizzata in un array.
Quindi il testo necessario per xml
viene semplicemente racchiuso tra i valori e la xml
riga viene aggiunta al file di output con echo
.
while IFS=$',' read -r -a arry
, è utile per un'altra. Grazie.
"Somename, Jack"
posto di Jack
nel file di input?
Una soluzione abbastanza user-friendly (cioè facile per i numpties come me) alla sfida della conversione da CSV a XML è quella di utilizzare un buon editor XML multipiattaforma che ha questa funzione integrata. (L'ho usato sia su Ubuntu che su Mac OSX 10.10.5; ha anche un eseguibile di Windows.)
Come accennato, è un editor XML, ma include "import" da CSV a XML (e da Excel a XML) nel suo menu principale:
Ha convertito un file CSV da 31 Mb per me (un dump da un database di libreria di 20.000 voci) in circa 15 secondi, dandomi un file XML ben formato da salvare e manipolare.
Come editor ha molte altre funzioni di benvenuto (dettagliate al link sopra). Non riesco a trovare alcuna menzione di alcuna licenza per questo, ma questo è incluso nel "README":
XMLSpear è un software gratuito per uso personale.
Invia i tuoi commenti a xmlspear@donkeydevelopment.com o sul forumhttp://donkeydevelopment.com/forums
.L'uso commerciale deve essere approvato da donkeydevelopment.
Basta inviare un'e-mail a xmlspear@donkeydevelopment.com con oggetto "richiesta di licenza".
Il file Leggimi include anche utili contenuti per un file .desktop.
Fa bene il mio lavoro con Ubuntu 18.04 LTS (Gnome).
Sono un grande fan di BaseX
cui sembra avere una capacità di importazione:
http://docs.basex.org/wiki/CSV_Module
Potresti sottolineare che, a quanto pare, è più facile usare un'applicazione web:
https://webapps.stackexchange.com/q/123959/24327
Ciò equivale a un plug-in o un'estensione per il browser che funziona con fogli di Google.
Sento il tuo dolore perché è un'utilità apparentemente semplice che dovrebbe essere, beh, disponibile tramite apt.
Suggerirei a te o qualcuno di scrivere codici in Python. Python è facile da imparare e risolvere facilmente il tuo problema. Ha sia il modulo CSV che i moduli XML . Il mio suggerimento prende in considerazione che potrebbe essere necessario avere i propri nomi per gli elementi XML o avere altri requisiti complessi (come la conversione dell'ultima colonna CSV in attributo dell'ultima ma una colonna).
Ci sono tonnellate di tutorial online su Python.