Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Modules
Modules Toutes vos questions sur l'utilisation, l'installation, la création de modules Perl sous Windows/Linux/Unix/MacOS. Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/10/2012, 17h58   #1
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Par défaut Parse XML et extraction des données voulues

Salut,

Je cherche à extraire des données d'un gros, très gros fichier XML.

Voici le type d'arborescence:
Code xml :
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 <MeasDataCollection>
    <measFileHeader>
        <fileFormatVersion>1</fileFormatVersion>
        <senderName>
            4F 50 54 4E 43 2F 42 53 43 50 4B 35 2F 47 31 31 
            42 2F 49 50 41 33 20
        </senderName>
        <senderType></senderType>
        <vendorName>45 72 69 63 73 73 6F 6E</vendorName>
        <collectionBeginTime>20120807220000Z</collectionBeginTime>
    </measFileHeader>
    <measData>
        <MeasData>
            <nEId>
                <nEUserName></nEUserName>
                <nEDistinguishedName></nEDistinguishedName>
            </nEId>
            <measInfo>
                <MeasInfo>
                    <measTimeStamp>20120807221500Z</measTimeStamp>
                    <granularityPeriod>900</granularityPeriod>
                    <measTypes>
                        <MeasType>49 50 53 45 4E 54 4B 42 59 54 45 53</MeasType>
                        <MeasType>49 50 52 45 43 4B 42 59 54 45 53</MeasType>
                        <MeasType>49 50 4C 4F 53 54 50 41 43 4B 55 4C</MeasType>
                        <MeasType>49 50 4E 55 4D 53 43 41 4E</MeasType>
                        <MeasType>49 50 55 4C 52 45 43 50 41 43 4B</MeasType>
                        <MeasType>49 50 44 4C 53 45 4E 54 50 41 43 4B</MeasType>
                        <MeasType>44 4C 37 30 37 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 37 36 38 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 38 31 38 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 38 36 39 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 39 31 39 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 39 36 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 37 30 37 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 37 36 38 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 38 31 38 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 38 36 39 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 39 31 39 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 39 36 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 31 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 31 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>49 50 4F 56 4C 4C 31</MeasType>
                        <MeasType>49 50 4F 56 4C 4C 32</MeasType>
                        <MeasType>50 53 44 49 53 43 4F 56 4C</MeasType>
                        <MeasType>43 53 44 49 53 43 4F 56 4C</MeasType>
                        <MeasType>49 50 4F 56 4C 43 53 52 45 47</MeasType>
                        <MeasType>49 50 4F 56 4C 50 53 52 45 47</MeasType>
                    </measTypes>
                    <measValues>
                        <MeasValue>
                            <measObjInstId>41 42 49 53 49 50 2E 52 58 4F 54 47 2D 35 31</measObjInstId>
                            <measResults>
                                    <iValue>63576</iValue>
 
                                    <iValue>60332</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>900</iValue>
 
                                    <iValue>131844</iValue>
 
                                    <iValue>143268</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
                            </measResults>
..............
La première "iValue" correspond au premier "MeasType", la deuxième correspond au deuxième, ainsi de suite...

Dans cet exemple il n'y a qu'un seul "measObjInstId", en réalité il y en a 254 je crois.

Le but de mon script Perl est de sortir toutes les ivalues pour chaque measObjInstId avec le nom correspondant aux ivalues.

Exemple:
Code :
1
2
3
4
5
6
7
8
9
10
Objet1:
   Type1 = valeur1
   Type2 = valeur2
   Type3 = valeur3
   ...
Objet2:
   Type1=valeur1
   Type2 = valeur2
   Type3 = valeur3
   ...
J'ai essayé des choses mais je n'y arrive pas car les types de valeur sont en dehors des balises "measObjInstId".

Pouvez vous m'aider?

Merci
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 18h47   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Bonjour,

Qu'avez-vous essayé ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2012, 01h03   #3
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Le code est sur un autre PC, là je ne l'ai pas mais j'arrive à peu près à extraire ce que je veux mais "ligne par ligne", en gros j'ai:
Code :
1
2
3
4
5
6
7
8
9
10
11
Type1
Type2
Type3
Objet1
Value1
Value2
Value3
Objet2
Value1
Value2
...
Le problème c'est que je veux quelque chose du genre:
Code :
1
2
3
4
5
6
7
8
Objet1
Type1 = Value1
Type2 = Value2
Type3 = Value3
Objet2
Type1 = Value1
Type2 = Value2
Type3 = Value3
Une idée?
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2012, 09h53   #4
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Pour analyser un fichier XML, je vous recommande d'utiliser un parser comme je l'explique dans cette documentation : http://djibril.developpez.com/tutoriels/perl/perl-xml/.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2012, 11h25   #5
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Cette documentation je l'ai déjà lue, elle m'a été très utile mais je ne trouve pas de solution à mon problème.

Je vais peut être me répéter mais par exemple j'ai 250 objets, 250 séries de 7 values, et une seule série de 7 types.
Ces 7 types sont des indicateurs pour chaque série de 7 values.
Je ne sais pas comment faire apparaître le nom de l'indicateur devant la value à chaque fois que ça se présente...

Votre documentation m'a aidé pour extraire des champs compris entre des balises mais pour faire ce que je veux ici, je ne comprends pas
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2012, 13h45   #6
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Je vous recommande de nous montrer votre programme. On ne va pas s'amuser à en faire un de toute pièce de novo.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2012, 16h25   #7
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Pas de souci je le montrerai quand j'aurai l'autre PC.

Et pour info je ne voulais pas un programme ou un code entier, où avez vous vu que je demandais ça?
"Une idée?" ne veut pas dire "donnez moi le code."
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2012, 18h59   #8
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Citation:
Envoyé par synx91 Voir le message
Pas de souci je le montrerai quand j'aurai l'autre PC.
Ok

Citation:
Envoyé par synx91 Voir le message
Et pour info je ne voulais pas un programme ou un code entier, où avez vous vu que je demandais ça?
"Une idée?" ne veut pas dire "donnez moi le code."
difficile de donner une idée, d'orienter une réflexion ou corriger un code inexistant !
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 09h28   #9
Philou67430
Expert Confirmé
 
Inscription : avril 2009
Messages : 2 633
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : avril 2009
Messages : 2 633
Points : 3 079
Points : 3 079
Un conseil : lors de l'analyse du fichier, range dans un tableau spécial (disons @meastype) les types), et utilise le ensuite lors de l'analyse des iValue.

Quel module parser de XML as-tu utilisé ?
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Using strict and warnings is good for you.
Philou67430 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 09h37   #10
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
J'utilise XML::Twig (recommandé dans la doc de Djibril et utile poru les gros fichier XML.

Je réorganise mon code et je vous poste ça.
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 09h43   #11
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Parfait
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 09h53   #12
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Voici donc mon code (basique car je débute):
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
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
 
my $file = 'output-test.xml';
 
my $twig1=XML::Twig->new(
	TwigRoots => {'MeasType' => \&print_text}
	);
my $twig2=XML::Twig->new(
	TwigRoots => {'measObjInstId' => \&print_text}
	);	
my $twig3=XML::Twig->new(
	TwigRoots => {'iValue' => \&print_text}
	);
 
$twig1->parsefile($file);
$twig2->parsefile($file);
$twig3->parsefile($file);
 
sub print_text
{my ($twig, $elt)=@_;
	print $elt->text;
	print "\n";
	$twig->purge;        #libère la mémoire
}
Le problème de ce code est que ça me sort d'abord tous les types puis tous les objets et enfin les values...
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h11   #13
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
J'ai fait quelques modifs (pour suivre le conseil de Philou):
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
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
 
my $file = 'output-test.txt';
 
my $twig1=XML::Twig->new(
	TwigRoots => {'MeasType' => \&print_type}
	);
my $twig2=XML::Twig->new(
	TwigRoots => {'measObjInstId' => \&print_object}
	);	
my $twig3=XML::Twig->new(
	TwigRoots => {'iValue' => \&print_value}
	);
 
$twig1->parsefile($file);
$twig2->parsefile($file);
$twig3->parsefile($file);
 
my @type;
 
sub print_type
{my ($twig1, $elt)=@_;
	@type = $elt->text;
	$twig1->purge;        #libère la mémoire
}
 
sub print_object
{my ($twig2, $elt)=@_;
	print $elt->text;
	print "\n";
	$twig2->purge;        #libère la mémoire
}
 
sub print_value
{my ($twig3, $elt)=@_;
	print $elt->text;
	print "\n";
	$twig3->purge;        #libère la mémoire
}
 
 print "Le premier type est: $type[0]\n";
Sauf qu'ici, au lieu d'avoir la première valeur "type", c'est la dernière. En fait je crois que chaque type écrase le précédent dans le tableau.
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h31   #14
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Bonjour,

Pouvez vous nous mettre un exemple de fichier XML valide ?

Sinon, à première vue, je vois que vous analysez le fichier à trois reprises et cela n'a à mon sens aucune utilité. Cela alourdit l'analyse en triplant la lecture du fichier XML.

Donnez-nous un fichier XML valide pour que nous puissions faire des tests car l'exemple du dessus ne contient pas toutes les balises fermantes.
Et si possible, avec un exemple concret de résultats souhaités.

Merci !
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h34   #15
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Bonjour,

Merci pour votre réponse, effectivement c'est pas très optimisé.

J'ai pris qu'une partie du fichier (il fait 44Mo):
Code xml :
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<MeasDataCollection>
    <measFileHeader>
        <fileFormatVersion>1</fileFormatVersion>
        <senderName>
            4F 50 54 4E 43 2F 42 53 43 50 4B 35 2F 47 31 31 
            42 2F 49 50 41 33 20
        </senderName>
        <senderType></senderType>
        <vendorName>45 72 69 63 73 73 6F 6E</vendorName>
        <collectionBeginTime>20120807220000Z</collectionBeginTime>
    </measFileHeader>
    <measData>
        <MeasData>
            <nEId>
                <nEUserName></nEUserName>
                <nEDistinguishedName></nEDistinguishedName>
            </nEId>
            <measInfo>
                <MeasInfo>
                    <measTimeStamp>20120807221500Z</measTimeStamp>
                    <granularityPeriod>900</granularityPeriod>
                    <measTypes>
                        <MeasType>49 50 53 45 4E 54 4B 42 59 54 45 53</MeasType>
                        <MeasType>49 50 52 45 43 4B 42 59 54 45 53</MeasType>
                        <MeasType>49 50 4C 4F 53 54 50 41 43 4B 55 4C</MeasType>
                        <MeasType>49 50 4E 55 4D 53 43 41 4E</MeasType>
                        <MeasType>49 50 55 4C 52 45 43 50 41 43 4B</MeasType>
                        <MeasType>49 50 44 4C 53 45 4E 54 50 41 43 4B</MeasType>
                        <MeasType>44 4C 37 30 37 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 37 36 38 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 38 31 38 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 38 36 39 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 39 31 39 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 39 36 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 37 30 37 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 37 36 38 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 38 31 38 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 38 36 39 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 39 31 39 35 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 39 36 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>44 4C 31 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>55 4C 31 30 30 53 54 4E 4C 4F 41 44</MeasType>
                        <MeasType>49 50 4F 56 4C 4C 31</MeasType>
                        <MeasType>49 50 4F 56 4C 4C 32</MeasType>
                        <MeasType>50 53 44 49 53 43 4F 56 4C</MeasType>
                        <MeasType>43 53 44 49 53 43 4F 56 4C</MeasType>
                        <MeasType>49 50 4F 56 4C 43 53 52 45 47</MeasType>
                        <MeasType>49 50 4F 56 4C 50 53 52 45 47</MeasType>
                    </measTypes>
                    <measValues>
                        <MeasValue>
                            <measObjInstId>41 42 49 53 49 50 2E 52 58 4F 54 47 2D 35 31</measObjInstId>
                            <measResults>
                                    <iValue>63576</iValue>
 
                                    <iValue>60332</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>900</iValue>
 
                                    <iValue>131844</iValue>
 
                                    <iValue>143268</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                            </measResults>
                            <suspectFlag><false/></suspectFlag>
                        </MeasValue>
                        <MeasValue>
                            <measObjInstId>41 42 49 53 49 50 2E 52 58 4F 54 47 2D 32 35</measObjInstId>
                            <measResults>
                                    <iValue>67617</iValue>
 
                                    <iValue>51234</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>900</iValue>
 
                                    <iValue>346727</iValue>
 
                                    <iValue>377444</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                            </measResults>
                            <suspectFlag><false/></suspectFlag>
                        </MeasValue>
                        <MeasValue>
                            <measObjInstId>41 42 49 53 49 50 2E 52 58 4F 54 47 2D 38 37</measObjInstId>
                            <measResults>
                                    <iValue>29625</iValue>
 
                                    <iValue>28747</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>900</iValue>
 
                                    <iValue>248633</iValue>
 
                                    <iValue>244490</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                            </measResults>
                            <suspectFlag><false/></suspectFlag>
                        </MeasValue>
                        <MeasValue>
                            <measObjInstId>41 42 49 53 49 50 2E 52 58 4F 54 47 2D 31 33 33</measObjInstId>
                            <measResults>
                                    <iValue>56352</iValue>
 
                                    <iValue>43416</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>900</iValue>
 
                                    <iValue>308891</iValue>
 
                                    <iValue>321431</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                                    <iValue>0</iValue>
 
                            </measResults>
                            <suspectFlag><false/></suspectFlag>
                        </MeasValue>
                    </measValues>
                </MeasInfo>
            </measInfo>
        </MeasData>
    </measData>
    <measFileFooter>20120807221500Z</measFileFooter>
</MeasDataCollection>

Pour être clair, pour chaque "objet", il y a autant de "value" que de "type".
Nombre total de value = nombre de type * nombre d'objet
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h37   #16
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Et ce fichier devrait donner quoi comme résultat ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h41   #17
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Je devrais avoir ça:

Citation:
measObjInstId"1"
MeasType"1" = iValue"1"
MeasType"2" = iValue"2"
MeasType"3" = iValue"3"
MeasType"4" = iValue"4"
...

measObjInstId"2"
MeasType"1" = iValue"1"
MeasType"2" = iValue"2"
MeasType"3" = iValue"3"
MeasType"4" = iValue"4"
...

...
Les MeasType et measObjInstId sont en hexa donc c'est pas lisible mais ça je les convertirai plus tard, je l'ai déjà fait dans d'autres scripts donc pas de souci.

Les deux iValue"1" n'ont pas la même valeur, c'est juste que je change d'objet alors je repars à 1. De même pour les value suivantes...
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h43   #18
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 487
Points : 31 592
Points : 31 592
Oui mais il nous faut le résultat concret car
Code :
1
2
3
4
MeasType"1" = iValue"1"
MeasType"2" = iValue"2"
MeasType"3" = iValue"3"
MeasType"4" = iValue"4"
ça ne m'aide pas. 1, 2, 3, 4 ça correspond à quoi ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h49   #19
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Alors en prenant les valeurs:
Citation:
41 42 49 53 49 50 2E 52 58 4F 54 47 2D 35 31 (premier measObjInstId):
49 50 53 45 4E 54 4B 42 59 54 45 53 (premier MeasType)= 63576
49 50 52 45 43 4B 42 59 54 45 53 = 60332
49 50 4C 4F 53 54 50 41 43 4B 55 4C = 0
...

41 42 49 53 49 50 2E 52 58 4F 54 47 2D 32 35 (deuxième measObjInstId):
49 50 53 45 4E 54 4B 42 59 54 45 53 (premier MeasType)= 67617
49 50 52 45 43 4B 42 59 54 45 53 = 51234
49 50 4C 4F 53 54 50 41 43 4B 55 4C = 0
...
Les MeasType "tournent en boucle" pour chaque measObjInstId, mais les iValue changent.

J'espère être clair, difficile à expliquer avec de l'hexa.
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 10h52   #20
synx91
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 51
Points : 11
Points : 11
Avec la conversion:
Citation:
ABISIP.RXOTG-51 (premier measObjInstId):
IPSENTKBYTES (premier MeasType)= 63576
IPRECKBYTES = 60332
IPLOSTPACKUL = 0
...

ABISIP.RXOTG-25 (deuxième measObjInstId):
IPSENTKBYTES (premier MeasType)= 67617
IPRECKBYTES = 51234
IPLOSTPACKUL = 0
...
synx91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h07.


 
 
 
 
Partenaires

Hébergement Web