Comment convertir un fichier CSV en XML?
Existe-t-il un logiciel pour Ubuntu?
Comment convertir un fichier CSV en XML?
Existe-t-il un logiciel pour Ubuntu?
Réponses:
Sur le site Web de la communauté sur la conversion, il existe un lien vers un outil en ligne de commande appelé csv2xml . Comme il n'est pas entretenu, vous pouvez choisir une autre option.
Il est également fait mention d'un outil java appelé csv2xml (avertissement: le site Web est en allemand) et d'un outil en ligne de commande appelé ff-extractor .
Le lien contient également des références à Python, Perl, PHP, XSLT mais cela signifie que vous devez coder le convertisseur vous-même.
Lorsque vous connaissez le format du csv
fichier et la structure dont vous avez besoin dans le xml
fichier, il est assez simple de créer un script capable de gérer la conversion.
Prenez le fichier simple.csv
:
Jack,35,United States
Jill,22,United Kingdom
Vous pouvez créer le xml
fichier suivant :
<?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>
Avec le script suivant:
#!/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
Même si vous n'avez jamais codé auparavant, je pense que cela devrait être facile à utiliser et à modifier. Le fichier est lu ligne par ligne dans la while
boucle.
IFS
est le spécificateur de champ interne. Le IFS=$','
déclare que la valeur du séparateur de champ est une virgule. Ceci est standard pour un fichier CSV, mais il peut être modifié selon les besoins pour correspondre au format de fichier d'entrée.
L' -r
argument de la read
commande lui indique de traiter toutes les barres obliques inverses dans votre fichier comme faisant partie de vos données plutôt que comme un échappement pour un caractère spécial suivant.
L' -a arry
argument place chaque colonne de votre fichier dans un tableau (nommé arry
). Les colonnes de cet exemple sont le nom, l'âge, le pays. En d'autres termes, les valeurs entre les virgules. Ainsi, chaque colonne de la ligne est stockée dans un tableau.
Ensuite, le texte nécessaire pour xml
est simplement enroulé autour des valeurs et la xml
ligne est ajoutée au fichier de sortie avec echo
.
while IFS=$',' read -r -a arry
, elle est utile pour une autre. Merci.
"Somename, Jack"
place de Jack
dans le fichier d'entrée?
Une solution assez conviviale (c'est-à-dire facile à utiliser pour moi) au défi de conversion CSV en XML consiste à utiliser un bel éditeur XML multiplateforme qui intègre cette fonctionnalité. (Je l'ai utilisé à la fois sous Ubuntu et Mac OSX 10.10.5; il a également un exécutable Windows.)
Comme mentionné, il s'agit d'un éditeur XML, mais il inclut une "importation" CSV vers XML (et Excel vers XML) dans son menu principal:
Il m'a converti un fichier CSV de 31 Mo (un vidage à partir d'une base de données de bibliothèque de 20 000 entrées) en environ 15 secondes, me donnant un fichier XML bien formé à enregistrer et à manipuler.
En tant qu'éditeur, il possède de nombreuses autres fonctionnalités de bienvenue (détaillées sur le lien ci-dessus). Je ne trouve aucune mention de licence pour cela, mais cela est inclus dans le "README":
XMLSpear est un logiciel gratuit à usage personnel.
Veuillez envoyer vos commentaires à xmlspear@donkeydevelopment.com ou sur le forumhttp://donkeydevelopment.com/forums
.L'utilisation commerciale doit être approuvée par donkeydevelopment.
Envoyez simplement un e-mail à xmlspear@donkeydevelopment.com avec le sujet "demande de licence".
Le fichier Lisez-moi inclut également le contenu d'un fichier .desktop.
Fait bien le travail pour moi sous Ubuntu 18.04 LTS (Gnome).
Je suis un grand fan de BaseX
ce qui semble avoir une capacité d'importation:
http://docs.basex.org/wiki/CSV_Module
Pourrait souligner qu'il est, apparemment, plus facile d'utiliser une application Web:
https://webapps.stackexchange.com/q/123959/24327
Ce qui revient à un plugin ou une extension pour le navigateur qui fonctionne avec les feuilles de Google.
Je ressens votre douleur parce que c'est un utilitaire apparemment simple qui devrait être disponible via apt.
Je suggérerais à vous ou à quelqu'un d'écrire des codes en Python. Python est facile à apprendre et à résoudre facilement votre problème. Il possède à la fois un module CSV et des modules XML . Ma suggestion prend en considération que vous pourriez avoir besoin d'avoir vos propres noms pour les éléments XML ou avoir d'autres exigences complexes (comme la conversion de la dernière colonne CSV en attribut de la dernière mais une seule colonne).
Il existe des tonnes de tutoriels en ligne sur Python.