Accéder au contenu.
Menu Sympa

fr - Re: [sympa-fr] constructeur XML à partir d'un fichier CSV

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: Vu Ngoc VU <adresse@cachée>
  • To: adresse@cachée, Marc Chantreux <adresse@cachée>
  • Subject: Re: [sympa-fr] constructeur XML à partir d'un fichier CSV
  • Date: Fri, 5 Oct 2012 11:21:06 +0200

> hello,

salut,

> On Thu, Oct 04, 2012 at 03:52:28PM +0200, Vu Ngoc VU wrote:
>> Bon, ok :
>> - il n'y a pas de contrôle sur la validité du CSV en entrée
>
> parce qu'il y en a plus dans les XML de sympa? il existe une DTD, un
> schema?
>
> moi j'aurais plutot tendance à dire (avec mon experience):
>
> * ne jamais utiliser autre chose qu'une lib xml pour générer du xml
> (oublie awk du coup): les erreurs sont trop vite arrivées.
> * le pourrais faire la même remarque pour CSV mais les pbs sont moins
> courants.

d'accord, je pensais, par rapport à ta 1ère question (que le XML des familles
de listes SYMPA est "simple") ; que je ne prenais pas trop de risques avec
awk.
J'ai sans doute trop d'attachement aux vieilles choses qui sont disponibles
tout
de suite :)
Mais oui, Perl c'est mieux pour générer du XML et c'est forcément disponible
sur
les installations de SYMPA.
Et aussi en utilisant Perl, on reste dans le même langage que le produit
SYMPA.

> * ton script prend la source et la destination comme arguments: non
> seulement ça te complique la vie mais ca rend ton script bien moins
> souple. imagine par exemple que ton entrée soit la sortie d'un autre
> programme. il faut donc que ton script se comporte pour bien faire
> comme tous les filtres unix.

Oui, j'avoue que c'était juste pratique pour mon usage et qu'on peut tout à
fait
s'en passer.
C'est assez facile à modifier.

> ci-après donc: une version perl de ton script (sans commentaire parceque
> je ne connais pas ton niveau en perl: n'hésite pas à poser des questions).
>
> (ARGV est un fh magique documenté dans "man perlvar" qui permet justement de
> se comporter comme un filtre: stdin si fichier absent dans @ARGV)

Mon niveau en Perl est plutôt basique.
Merci de ton retour d'expérience et ton exemple de script.
Je me demandais en fait comment font les autres utilisateurs pour écrire ces
XML.

> #! /usr/bin/perl
> use XML::Simple;
>
> # premiere ligne = liste des champs
> my @fields = map { chomp; split /;/ } scalar <ARGV>;
> print XMLout { list =>
> [ map {
> chomp;
> my %list;
> @list{ @fields } = split /;/;
> \%list;
> } <ARGV> ]
> }, qw( NoAttr 1 RootName familly );
>
> cordialement,
> marc
>





Archives gérées par MHonArc 2.6.19+.

Haut de le page