Bonjour,
J'ai dans un XML model ceci :
Grâce à un script PERL, je dois compléter la balise FILES avec d'autres FILE (référence à des fichiers à traiter).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <root> <tache1> <files> <file path="" log=""/> </files> </tache1> <tache2> <files> <file path="" log=""/> </files> </tache2> </root>
Une fois les ajouts de FILE faits, j'efface la première balise '<file path="" log=""/>' qui ne sert que pour le modèle en fait.
Il y a des cas où certaines tâches ne doivent pas comporter la balise FILES. On ne le sait que si FILES ne comporte plus de balise FILE.
J'ai donc écrit ceci :
Or le "foreach" qui supprime les balises 'FILE' laisse :
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 foreach my $empty ( $root->xql('/root/*/files/file[@path=""]') ) { $empty->getParentNode()->removeChild($empty); } foreach my $empty ( $root->xql('/root/*/files') ) { print STDERR $empty->toString() . "\n"; if ( $empty->hasChildNodes() == 0 ){ $empty->getParentNode()->removeChild($empty); } elsif ( $empty->hasChildNodes() == 1 ){ print STDERR $empty->toString() . "\n"; } }
et le blanc qu'il y a dans la balise FILES de TACHE1 fait qu'il ne passe jamais dans
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 <root> <tache1> <files> </files> </tache1> <tache2> <files> <file path="c:\az\er\rt\ty\yu1.log" log="azerty"/> <file path="c:\az\er\rt\ty\yu2.log" log="azerty"/> </files> </tache2> </root>
La question est donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if ( $empty->hasChildNodes() == 0 ){ $empty->getParentNode()->removeChild($empty); }
Comment supprimer la balise FILES de TACHE1 ? ? ?
Merci d'avance pour l'aide...
Partager