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
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.
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| ... | ] ...
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
Merci beaucoup pour votre aide.
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);
CC
Partager