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:
fichier xml2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <titre> <blabla1></blabla1> <delimiter></delimiter> <blabla2></blabla2> </titre>
Or j'aimerais construire le fichier suivant combinant les 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <header> <exemple> <variable1>test1</variable1> </exemple> <exemple> <variable2>test2</variable2> </exemple> </header>
-> c'est à dire reprendre mon xml1 et lui insérer le contenu de xml2 (sans les balises root du xml2).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Voici mon code:
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager