#!/usr/bin/perl
#perl  BAO1_Script_Methode2.pl  ./2020/01/01/18-09-00/0,2-3208,1-0,0.xml
#La deuxième méthode est la bibliothèque XML::RSS. ici on prend en argument directement le nom du fichier XML à traiter.
# Méthode 2 : XML::RSS
#-------------------------------------------
use XML::RSS;
use Data::Dumper;
use Data::Dump qw(dump);
use strict;
use warnings;
binmode(STDOUT, ":encoding(UTF-8)");
#-----------------------------------------------------------
my $file="$ARGV[0]";
my $rss=new XML::RSS; 
# créé l'objet XML::RSS et stock dans le scalaire $rss qui est une référence 
#-----------------------------------------------------------
open my $output, ">:encoding(UTF-8)","BAO1_XML_RSS_titre-description.txt";
open my $output2, ">:encoding(UTF-8)","BAO1_XML_RSS_titre-description.xml";
#-----------------------------------------------------------
print $output2 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<corpus>\n";
eval {$rss->parsefile($file); };  
# on remplit l'objet via parsefile; eval permet de récupérer et d'évaluer le déroulement de la fonct° que j'ai mis entre { }
if( $@ ) {
    $@ =~ s/at \/.*?$//s;               #$@ erreur, remove module line number
    print STDERR "\nERROR in '$file':\n$@\n";
} 
else {
	
	foreach my $item (@{$rss->{'items'}}) {
		my $titre=&nettoyage($item->{'title'});
		my $description=&nettoyage($item->{'description'});
		print $output "$titre \n";
		print $output "$description \n";
		print $output "----------------------------\n";
		print $output2 "<item><titre>$titre</titre><description>$description</description></item>\n";
	}
	print "---------------------\n";
	
}
print $output2 "</corpus>\n";
close $output;
close $output2;
#------------------------------------------------
sub nettoyage {
	my $texte=shift @_;
	$texte=~s/(^<!\[CDATA\[)|(\]\]>$)//g;
	$texte.=".";
	$texte=~s/\.+$/\./;
	return $texte;
}