Bonjour,

Je travail sur un fichier XML qu'il faudrait spliter en deux. Voici à quoi il ressemble
Code xml : 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
 
<Document>
     <balise2>
            <header></header>
            <Lot>
             <ID>XXXXXXX</ID>
            </Lot>
            <Lot>
             <ID>YYYYYYYY</ID>
             <balise>
                   <sous-balise1>A</sous-balise1>
				   <sous-balise2>B</sous-balise2>
             </balise>
            </Lot>
            <Lot>
             <ID>ZZZZZZZ</ID>
            </Lot>
     </balise2>
</Document>

J'ai besoin d'extraire la partie YYYYYYY de l'XML et pour ca j'utilise le module XML :: parser

Code : Sélectionner tout - Visualiser dans une fenêtre à part
my $var = $parser->XMLin($ARGV[0]);
Ensuite j'isole la ligne YYYYYYY avec un if :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
foreach my $ligne ( @{ $var->{Document}->{Balise2}->{Lot} } ) {
if ($ligne->{ID} eq 'YYYYYYY') {
On traite les données
}
}
Pour traiter les données et les remettre au format XML dans un fichier à part, j'ai pensé à ca dans mon if :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
my $data = $parser->XMLout ($ligne);
print $data;
mais j'ai des soucis avec mes sous balises. Mon fichier généré ressemble à ça :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
             <ID>YYYYYYYY</ID>
             <balise sous-balise1="A">
                   <sous-balise2>B</sous-balise2>
             </balise>
Je ne comprend pas pourquoi certaines sous-balises se comporte correctement et d'autre se comporte comme la sous-balise1.
Merci