INDEX

Programmes

Parcours arborescence fichier
Traitement avec TreeTagger
Traitement avec Cordial (1ere partie)
(2ere partie)

Etapes 1, 2, 3 et 4 intégrées par modules (archive zip)

Fichiers XML de résultat

Parcours
Traitement avec TreeTagger
Traitement avec Cordial

Feuilles XSL

Feuille de style TT
Feuille de style Cordial

Claire Guiraud

BOITE A OUTILS 1

Objectif :

Parcourir une arborescence de répertoires (en gardant trace du parcours), ouvrir chaque fichier trouvé dans l'arborescence (en gardant trace du nom du fichier analysé), et extraire le contenu de chaque balise 'description' de chaque fichier traité. Le résultat doit être présenté dans une structure XML, reflétant le parcours dans l'arborescence, et le contenu de chaque balise pour chaque fichier de chaque répertoire de l'arborescence parcourue.

Données de base : un programme perl nous a été fourni comme base de départ : il permet de parcourir l'arborescence du répertoire à traiter et de garder une trace du parcours effectué.


Programme écrit :


#/\usr/bin/perl
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise une variable contenant le flux de sortie
my $DUMPFULL1="";
# on initialise la variable fichier pour pouvoir ecrire le contenu du premier repertoire au debut du sub
my $fichier=$path;
#----------------------------------------
my $output1="SORTIE.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
&parcoursarborescencefichiers($rep);    #recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Claire Guiraud</NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
    my $path = shift(@_);
    opendir(DIR, $path) or die "can't open $path: $!\n";
    my @files = readdir(DIR);
    closedir(DIR);
    foreach my $file (@files) {
$DUMPFULL1.="<repertoire>".$file."</repertoire>"."\n";
    next if $file =~ /^\.\.?$/;
    $file = $path."/".$file;
    if (-d $file) {
        &parcoursarborescencefichiers($file);    #recurse!
    }
    if (-f $file) {
        open(FILEINPUT,"$file");
On ajoute à la 'mémoire' de la variable DUMPFULL le nom de chaque répertoire ou fichier parcouru entre deux balises 'fichier'
$DUMPFULL1.="<fichier>".$file."</fichier>"."\n";
while ($ligne = <FILEINPUT>){
    if
On cherche tous les caractères situés entre deux balises 'description' ($ligne=~/<description>(.*)<\/description>/) {
       
On ajoute ce qui a été trouvé à la variable DUMPFULL         $DUMPFULL1.="<contenu>".$1."</contenu>"."\n";
     }
}
close(FILEINPUT);
        print $i++,"\n";
    }
    }
}
#----------------------------------------------


Fichier obtenu : SORTIE.xml

Notes : On observe que le texte ainsi obtenu n'est pas 'propre'. Cela est dû à la présence d'entités html dans les fichiers sources. Il faudra donc 'nettoyer' les données lors de leur extraction.


INDEX