Bonjour je viens de créer un script perl qui permet de parser un document xml en utf-8. je récupère les contenus de certaines balises tout simplement.
le soucis est que je réécris un document xml dèrrière et il me renvoi des caractère bizarre du genreje me demande ce que je dois faire pour avoir la bonne transcription.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <Location>C�te</Location>
voici mon code perl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ###parse le fichier xml selon l'ÈlÈment a analyser (ici les signature) use locale; use strict; use XML::Parser; if ( $#ARGV!=0 ){ die "Usage : ", $0, "fichier_xml\n"; } my $parseur = new XML::Parser; $parseur -> setHandlers ( Start => \&balise_ouvrante, End => \&balise_fermante, Char => \&segment_texte ); my ( $segment, $segment_en_cours); $parseur->parsefile( $ARGV[0] ,'<:utf8'); sub balise_ouvrante { my $p = shift @_; my $balise = shift @_; my %attributs; while ( $#_ >= 0 ){ my $cle = shift @_; my $valeur = shift @_; $attributs{$cle} = $valeur; } if ( $balise eq "Organization" | $balise eq "Location" | $balise eq "Person" | $balise eq "JobTitle"){ $segment = ""; $segment_en_cours = 1; } } sub segment_texte { my $p = shift @_; my $texte = shift @_; if ( $segment_en_cours ) { $segment = $segment . $texte; } } my $i; sub balise_fermante { my $p = shift @_; my $balise = shift @_; if ( $balise eq "Organization" | $balise eq "Location" | $balise eq "Person" | $balise eq "JobTitle"){ $segment =~ s/\n//g; $segment =~ s/\s\s+/ /g; print "<".$balise.">".$segment."</".$balise.">"."\n"; $segment_en_cours = 0; $i++; } } ##print "---Nombre de signature--- :".$i."\n";
merci de votre aide
Partager