[XML-Twig] Problème d'insertion d'un document XML dans un autre
Bonjour,
je bute depuis 3 jours sur quelque chose qui peut paraître stupide...
Je ne parviens pas à inclure une partie d'un fichier xml dans un autre, je m'explique:
fichier xml1:
Code:
1 2 3 4 5
| <titre>
<blabla1></blabla1>
<delimiter></delimiter>
<blabla2></blabla2>
</titre> |
fichier xml2:
Code:
1 2 3 4 5 6 7 8
| <header>
<exemple>
<variable1>test1</variable1>
</exemple>
<exemple>
<variable2>test2</variable2>
</exemple>
</header> |
Or j'aimerais construire le fichier suivant combinant les 2:
Code:
1 2 3 4 5 6 7 8 9 10 11
| <titre>
<blabla1></blabla1>
<delimiter></delimiter>
<exemple>
<variable1>test1</variable1>
</exemple>
<exemple>
<variable2>test2</variable2>
</exemple>
<blabla2></blabla2>
</titre> |
-> c'est à dire reprendre mon xml1 et lui insérer le contenu de xml2 (sans les balises root du xml2).
Voici mon code:
Code:
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
| # xml1
my $twig = new XML::Twig(pretty_print => 'indented',);
my $XML1 = "/tmp/xml1.xml";
# xml2
my $XML2 = "/tmp/xml2.xml";
#output
my $XML3 = "/tmp/xml3.xml";
# ouverture fichier de sortie
open( my $FhXML3, '>', $XML3 )
or die("Impossible d'ouvrir le fichier $XML3\n$!");
# on parse le 1 fichier xml
$twig->parsefile($XML1);
my $root = $twig->root;
# second fichier xml
my $twig2 = new XML::Twig(twig_roots => { 'exemple' => '1',}, pretty_print => 'indented',);
$twig2->parsefile($XML2);
# traitement
my $root2 = $twig2->root->first_child('exemple');
my $node = XML::Twig::Elt->new( $root2 );
$root2->paste( after => $root->first_child('delimiter') );
# ecriture dans fichier
$twig->print($FhXML3);
# fermeture fichier
close($FhXML3); |
resultat:
Il m'affiche le contenu du xml2 mais avec ses balises root (<header></header>), c'est à dire:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <titre>
<blabla1></blabla1>
<delimiter></delimiter>
<header>
<exemple>
<variable1>test1</variable1>
</exemple>
<exemple>
<variable2>test2</variable2>
</exemple>
</header>
<blabla2></blabla2>
</titre> |
Voyez-vous comment faire?
J'ai testé de faire des remplacements (avec sub), mais rien n'y fait.
Merci d'avance pour vos réponses.