Comment forcer le style d'écriture des balises avec XMLout
Bonjour,
J'ai un code qui lit, modifie puis écrit des fichiers xml.
Code:
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); |
Fichier en entrée :
Code:
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:
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 ... :
Code:
1 2
| <traitement .....>
</traitement> |
sont devenues :
Code:
<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 ...