Bonjour,

Je souhaite à partir d'un fichier xml source contenant de nombreuses balises, en supprimer certaines en fonction de leur contenu...
Je m'explique :

Voici une petite partie de la structure du mon fichier xml source que j'ai récupéré via le module xml::simple

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
 
$VAR1 = {
          'BODY' => {
                    'SLU' => {
                             'TOTO' => {
                                          'XXXX' => 'xx'
                                       },
 
 
                             'LIST' => {
                                         'RESULT' => [
                                                {
             |                                     'AAAAA' => {},
             |                                     
             |                                     'BBBBB' => {
             |                                                '11111' => '00:00',
             |                                                '22222' => {
             |                                                         'BB' => 'bb',
             |                                                         'BBB' => 'bbb'
             |                                                       },
             |                                                },
             |                                                 
             |                                      'CCCCC' => {
             |                                                  '11111' => {
             |                                                               'ddd' => {
             |                                                                       'ee' => '00',
'RESULT'1|                                                                       'ff' => {},
             |                                                                      },
             |                                                                      
             |                                                              'eeee' => 'A/B',
             |                                                               'fff' => {},
             |                                                               }
             |                                                               
             |                                                   }
             |                                    },
 
 
                                                  {
             |                                     'AAAAA' => {},
             |                                     'BBBBB' => {
             |                                                '11111' => '0000',
'RESULT'2|                                                '22222' => { ...
             |                                                			
             |                                                			}
             |                                    ...
             |                                		 ...
             |                                    ...
                                                 ...
'RESULT'x|                                    ...
             |                                    
                                                 ]
 
                                       ...
L'entête xml de mon fichier destination ne changera pas, jusqu'aux nombreuses balise <RESULT>, en effet, en fonction du contenu d'un élément présent dans une balise <RESULT>, je souhaite supprimer l'ensemble du contenu de la balise.

Voici le code que j'ai commencé, j'arrive bien à interroger le contenu des sous balises présentes dans mes balises <RESULT>, mais je n'arrive pas à reconstruire un fichier xml avec la même structure.

N'ayez pas peur du code, je tente de m'améliorer , je ne maitrise pas encore assez les tables de hashages

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
 
use XML::Simple;
 
use Data::Dumper;
 
open(OUT,"> test.txt") or die("Impossible d'ouvrir test.txt\n");
 
@Tab = ();
 
$xml = new XML::Simple;
 
$ref = $xml->XMLin('test.xml');
 
foreach $value	(@{$ref->{BODY}->{SLU}->{LIST}->{RESULT}})	{
 
	$BBBBB = $value->{BBBBB};
 
	$CCCCC = $value->{CCCCC};
 
 
	#SI OK, je souhaite conserver la structure ('AAAAA','BBBBB','CCCCC')  #dans un mon futur fichier xml
	if (($BBBBB->{22222}->{BB} eq "bb") && (($CCCCC->{11111}->{eeee}) eq "A/B"))		{  
 
				push(@Tab,$value);
 
 
	}
 
 
}
 
 
#Reconstruction d'un fichier xml avec ce qui m'interesse	
$xml = new XML::Simple (NoAttr=>1, RootName=>'data');
 
$data = $xml->XMLout(\@Tab);
 
print Dumper($data);
Merci beaucoup pour votre aide.

CC