J'ai pu implementer un perl-script qui parse le fichiers-xml, mais pour cela il me faut alle dans mon editor perl ecrire les noms de tous mes fichiers, malheureusement j#en possede des milliers de fichiers-xml, et j'aimerai que ce code soit a mesure de retrouver tous les fichiers-xml se trouvant dans un dossier et en suite naturement les parser, sans toute fois que je met a taper dans mon editor le nom de milliers de fichiers. c'est cela mon probleme.
, si je n'en possedait que 4 ou 6 j'aurai tapez les noms dans mon editor-perl et j'aurai recu un resultat a l'immediat
en quelque sorte je pourrai resume de la sorte:
1-(Perl-script + Fichiers-XML) sauvegarder dans un dossier sur mon Ordi
2- Perl-script cherche les fichiers-XML se trouvant dans le dossier
3- perl-script traite (parser) les fichiers_xml
4- perl-script me retourne le result du parsage sur un fichier-text
voila mon script :
Code : Tout sélectionner
use strict;
use warnings;
use XML::Twig;
use File::Find;
my $file1 = shift or die 'No file1';
my @files = @ARGV or die 'No files';
my $FileResult = 'result.csv';
open( my $FhResult, '>', $FileResult )or die ("Unable to open file $FileResult\n$!");
my $twig1= XML::Twig->new(
twig_handlers => {
'Parameter' => sub {
my $attr_name = $_->{'att'}->{'name'} // 'fault';
print $FhResult $attr_name . ",";
},
},
);
print $FhResult( (split('_', $file1,2))[0] . ',' );
$twig1->parsefile($file1);
for my $file (@files) {
my $twig2 = XML::Twig->new(
twig_handlers => {
'Parameter' => sub {
my $attr_value = $_->{'att'}->{'value'} // 'fault';
print $FhResult $attr_value . ",";
},
},
);
print $FhResult ( split( '_', "\n$file", 2 ) )[0] . ',';
$twig2->parsefile($file);
}
close $FhResult;