Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
[sympa-fr] constructeur XML à partir d'un fichier CSV
- From: Vu Ngoc VU <adresse@cachée>
- To: adresse@cachée
- Subject: [sympa-fr] constructeur XML à partir d'un fichier CSV
- Date: Thu, 4 Oct 2012 15:52:28 +0200
bonjour,
comme je me suis mis aux familles et que j'en avais un peu assez de remplir
les fichiers XML,
j'ai écrit un script.
Bon, ok :
- il n'y a pas de contrôle sur la validité du CSV en entrée ;
- je ne vérifie pas non plus si le fichier XML existe déjà avant de l'écraser
- on pourrait donner des arguments au script
etc...
Mais pour l'instant, je ne me suis concentré que sur la logique de la
"boucle".
Vos critiques sont les bienvenues.
Peut-être qu'il existe déjà un outil pour faire ce travail ?
Si c'est le cas, je compte sur vous pour me l'indiquer :)
J'avais aussi un peu joué avec csvtool...
le config.tt2 est encore écrit à la main pour l'instant.
Je trouve cette étape pas trop fastidieuse comparé à la génération à
l'écriture des XML à la main.
#!/bin/sh
#----------------------------------
# purpose :
# trying to handle named columns
# in CSV files
# with awk
# to build XML file
# for SYMPA families instanciation
#----------------------------------
## example of some lines of the CSV file :
# listname;contact_email;contact_gecos;contact_info
# list1;adresse@cachée;Full Name1;about contact1
# list2;adresse@cachée;Full Name2;about contact2
# list3;adresse@cachée;Full Name3;about contact3
# the file we read in
CSV_FILE=path/to/your/file.csv
# the file we write out
XML_FILE="$(dirname $CSV_FILE)/$(basename $CSV_FILE .csv ).xml"
echo "\$XML_FILE : $XML_FILE"
# fields separator
DELIM=";"
awk '
BEGIN {
FS="'$DELIM'"
print "<?xml version=\"1.0\" ?>"
print " <family>"
}
# 1st line contains headers (named columns)
NR == 1 {
split($0,fields,"'$DELIM'")
}
# print XML tags for others lines (2..EOF)
NR != 1 {
print " <list>"
split($0,values,"'$DELIM'")
for (v in values)
print " <"fields[v]">"values[v]"<"fields[v]">"
print " </list>"
}
END {
print "</family>"
}
' $CSV_FILE > $XML_FILE
-
[sympa-fr] constructeur XML à partir d'un fichier CSV,
Vu Ngoc VU, 04/10/2012
-
Re: [sympa-fr] constructeur XML à partir d'un fichier CSV,
Marc Chantreux, 04/10/2012
- Re: [sympa-fr] constructeur XML à partir d'un fichier CSV, Vu Ngoc VU, 05/10/2012
-
Re: [sympa-fr] constructeur XML à partir d'un fichier CSV,
Marc Chantreux, 04/10/2012
Archives gérées par MHonArc 2.6.19+.