From: Bruno Faure (bfaure@cosmosbay.com)
Date: 24/08/2000 - 13:16
JM Destabeaux a écrit :
> COLLET Laurent TPC-SRD wrote:
> >
> > je souhaite procéder à un formatage de fichier XML contenant uniquement des
> > lignes du type :
> > <CNE>10500068;10;TPC;10;SFR;C;F;R;N; 15; 2;E;2;01;FRA;;0;111111; 2;110</
> > CNE> pour toutes les transformer en ligne du type :
> >
> > <CNE NUF="10020026" ORF="10" GAP="TPC" CAP="10" FAF="SFI" ETF="C" CAF="I" NAF="
> > R" IFR="R" NBP="1" NSC="1" ISE="E" TYF="2" REM="01" CPA="FRA" CLA="" IMT="1"
> > IDC="111111" NDU="2" INS="110"/>
> >
> > chaque element contient un nombre spécifique de données que je veux donc
> > transformer en attributs mais actuellement ses données sont séparées par des
> > points virgule. ici CNE contient 20 données et donc je veux les transformer en
> > 20 attributs selon le modele au dessus
> >
> > Quelqu'un pourrait-il me fournir une solution de formatage qui evite
> > l'utilisation de XSL mais plus des traitements comme des scripts schell ou
> > autre chose
> > sous unix. D'avance merci bcp.
>
> Exemple simple avec gawk (ou nawk, awk):
>
> gawk 'BEGIN {FS = ";"}\
> {CNE["NUF"] = $1; CNE["ORF"] = $2; CNE["GAP"] = $3; CNE["CAP"] = $4; CNE["FAF"] = $5; #etc.\
> printf "<CNE "; for (val in CNE) {printf val "=\"" CNE[val] "\" "}; printf "/>"}'
>
> Et je suis sûr qu'en Perl on peut faire plus simple encore ;+)
>
Oui encore que ca doit se valoir ;-)
Tu peux utiliser un tableau associatif (l'equivalent d'une hashtable en Java) :
- les cles representant les noms des attributs
- les valeurs representant les donnees
$CNE = "ta chaine contenant les donnes a recuperer separees par des ;";
# Recuperation des donnees dans un tableau
@donnees = split /;/, $CNE;
# Creation du tableau assoiciatif
%tab = ( 'NUF' => $donnee[0] , 'ORF' => $donnee[1] , 'GAP' => $donnee[1] , ...);
# Affichage en parcourant le tableau
while (($attribut, $donnee) =each %tab);
{
print $attribut."='"$donnee."' ";
}
Bruno
>
> -jmd
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a xml-tech-request@xmlfr.org
> (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|