#!/usr/bin/perl <$output0")) { die "Pb a l'ouverture du fichier $output0"}; close(FILEOUT); my $output1="$rubrique-surface-lib.xml"; # flux de sortie xml if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"}; print FILEOUT "\n"; print FILEOUT "\n"; close (FILEOUT); #################################################### $file=~ s/[\/]$//; &parcoursfichier($file); open (FILEOUT,">>:encoding(utf-8)", "$output1"); print FILEOUT "\n"; close (FILEOUT); exit; #################################################### SOUS-PROGRAMME sub parcoursfichier{ my $path = shift(@_);#on enleve le premier argument qu'on lit, parce que c'est un dossier mais pas fichier qu'on veut opendir(DIR, $path) or die "pb d'ouvrire $path: $!\n"; my @contenuRep = readdir(DIR); closedir(DIR); foreach my $fichier (@contenuRep) { next if $fichier =~ /^\.\.?$/; $fichier = $path."/".$fichier; if (-d $fichier) { print " ==> ",$fichier,"\n"; &parcoursfichier($fichier); print " ==> ",$fichier,"\n"; } if (-f $fichier) { if ($fichier=~/$rubrique.*.xml$/){ #CETTE LIGNE PEUT DONNER ERREUR S'IL Y A DES FICHIERS VIDES DANS L'ARBORESCENCE print $fichier, "\n"; open (IN, "<:encoding(utf-8)", $fichier); open (OUT1, ">>:encoding(utf-8)", $output0); open (OUT2, ">>:encoding(utf-8)", $output1); print OUT2 "\n"; #----------------------------------------------------------- my $ficher="$fichier"; my $rss=new XML::RSS; # nouvelle instance du module #----------------------------------------------------------- #recupérage du texte dans les balises est fait par le module $rss->parsefile($fichier); my $nombredechampdescription=0; foreach my $item (@{$rss->{'items'}}) { #pour chaque éléments contenus dans $nombredechampdescription++; my $title=$item->{'title'}; # on récupère le texte contenu dans $title.= "."; my $description=$item->{'description'}; # on récupère le texte contenu dans <description> $title=&nettoyage($title); $description=&nettoyage($description); print OUT1 "$title\n"; print OUT1 "$description\n"; print OUT2 "<item><title>$title$description\n"; } print OUT2 "\n"; close (OUT1); close (OUT2); close (IN); } } } } #################################################### SOUS-PROGRAMME # Cette fois-ci, le nettoyage est traité comme procedure sub nettoyage { my $description=shift; $description =~ s/<//g; $description =~ s/]+>//g; $description =~ s/]+>//g; $description =~ s/<\/a>//g; $description=~ s/&#39;/'/g; $description =~ s/&#34;/"/g; $description =~ s/<[^>]+>//g; $description =~s/'/\'/g; return $description }