Bonjour,
J'ai un code qui lit, modifie puis écrit des fichiers xml.
Fichier en entrée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 use XML::Simple; my $xml=new XML::Simple (KeyAttr=>[]); my $lecturefichier=$xml->XMLin("monfichier.xml",ForceArray => ["declenchement","activite","traitement","modification"], ContentKey=>'texte'); .... modifs dans $xml ... my $new_data=$xml->XMLout( $write->{xml},SuppressEmpty=>1,XMLDecl=>"<?xml version='1.0' encodig='UTF-8' standalone='yes'?>", noescape=>1); binmode FILE,":utf8"; print FILE $new_data; close(FILE);
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 <?xml version='1.0' encodig='UTF-8' standalone='yes'?> < opt type="regles" write="1"> <regles_pp> <oper mod="xx" val="test" > <traitement mod="xx" val="Traitement premier" > </traitement> <traitement mod="xx" val="Traitement deux" > <modification var="modif" val="333.33"> </modification> </traitement> <traitement mod="xx" val="Traitement fin" > </traitement> </oper> </regles_pp> </opt>
A la sortie avec modification de la balise "modification"
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version='1.0' encodig='UTF-8' standalone='yes'?> < opt type="regles" write="1"> <regles_pp> <oper mod="xx" val="test" > <traitement mod="xx" val="Traitement premier" /> <traitement mod="xx" val="Traitement deux" > <modification var="modif" val="443.33" /> </traitement> <traitement mod="xx" val="Traitement fin" /> </oper> </regles_pp> </opt>
Certaines fins de balise "traitement" ont été modifiées ... :
sont devenues :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <traitement .....> </traitement>
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part <traitement .... />
La réciproque est vraie aussi.
Ce qui me dérange fortement car je dois effectuer une comparaison entre le fichier d'entrée et celui de sortie et les diffs sont illisibles à cause de ce phénomène.
Y a-t-il un moyen de forcer les fins de balises avec retour à la ligne ? (comme dans le fichier en entrée)
Merci de m'aider car je cherche depuis plusieurs jours et je ne trouve rien ...
Partager