Comment remplir un tableau a partir des données du fichier.xml
Bonjour,
J'ai un fichier xml je veux le parcourir et remplir et récupérer les données dans un tableau
Voici un extrait du mon fichier output.xml
Citation:
<Vocabulaire>
<Mot Num="0" Nom="أَيْ">
<caractere type="CL">أ</caractere>
<caractere type="VC">َ</caractere>
<caractere type="CL">ي</caractere>
<caractere type="VC">ْ</caractere>
</Mot>
<Mot Num="1" Nom="تْفَضَّلْ">
<caractere type="CS">ت</caractere>
<caractere type="VC">ْ</caractere>
<caractere type="CL">ف</caractere>
<caractere type="VC">َ</caractere>
<caractere type="CS">ض</caractere>
<caractere type="VC">َ</caractere>
<caractere type="CS">ل</caractere>
<caractere type="VC">ْ</caractere>
</Mot>
</Vocabulaire>
Et voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
#!/usr/bin/perl
use Data::Dumper;
use XML::Twig;
use File::Spec;
#-----------------------------------------------------------
# MAIN
#-----------------------------------------------------------
my $goodFileXML = 'D:\\Memoire Mastere\\Script\\Script_final\\Script_Grapheme-phoneme\\output.xml';
my $Folder = 'D:\\Memoire Mastere\\Script\\Script_final\\Script_Grapheme-phoneme';
my $RepBase = 'D:\\Memoire Mastere\\Script\\Script_final\\Script_Grapheme-phoneme';
my $FicAraOut1 = File::Spec->catfile( $RepBase, 'outregles.txt' );
open (OUT_Aran, '+>:encoding(UTF-8)', $FicAraOut1 ) or die "Impossible ouvrir fichier $FicAraOut1 en sortie\n";
#Recuperer la liste des path des fichiers dans une hashtable
getpath( $goodFileXML, $Folder );
print OUT_Aran "\n";
# Fonctions
#-----------------------------------------------------------
# On liste les path de chaque fichier *.xml dans une hashFile
#-----------------------------------------------------------
sub getpath {
#retourne la hashMap avec le titre N° et le nom de fichier
my ( $goodFileXML, $Folder ) = @_;
my $ddate = ""; #passer la date de revision en parametre
my $refHash = extractTitle( $goodFileXML, \$ddate, $Folder );
return $refHash;
}
sub extractTitle {
my ( $ficName, $refDate, $Folder ) = @_;
%hashFile = ();
# Utilisation des handlers
my $twig = new XML::Twig( Twig_handlers => { 'Mot' => \&Mot, }, );
# creation d'un objet twig
$twig->parsefile($ficName);
return; #retourner la référence sur la hashmap
}
@tabcar=();
@tabtype=();
my $size=scalar(@tabcar);
my $sizes=scalar(@tabtype);
sub Mot
{
my($twig,$mot)= @_;
print OUT_Aran "Nom : ", $mot->att('Nom'), "\n";
foreach my $TwmotFils ( $mot->children("caractere"))
{
print OUT_Aran "caractere : ";
push(@tabcar,$TwmotFils->text());
for my $i(0..$size-1)
{
print OUT_Aran $tabcar[$i];
}
print OUT_Aran "type : ";
push(@tabtype,$TwmotFils->att('type'));
for my $j(0..$sizes-1)
{
print OUT_Aran $tabtype[$j];
}
}
} |
Merci de m'aider