in reply to Concatenating XML files
The method you are looking for is xml_string, which is also aliased as innerXML.
#!/usr/bin/perl use strict; use warnings; use XML::Twig; print "<foo>"; foreach my $file ( ' to_concat_1.xml', 'to_concat_2.xml') { print XML::Twig->new( keep_spaces =>1, comments => 'process')->par +sefile( $file)->root->xml_string; } print "</foo>\n";
Note that the comments => 'process' is used only because you have comments just before the end of the foo element in your example, it is probably not needed in your real code.
Also a more generic way would be to keep the first document, and then to add the other ones at the end, removing their root:
#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $result_twig; foreach my $file ( ' to_concat_1.xml', 'to_concat_2.xml') { my $current_twig= XML::Twig->new( comments => 'process')->parsefil +e( $file); if( !$result_twig) { $result_twig= $current_twig; } else { $current_twig->root->move( last_child => $result_twig->root) ->erase; } } $result_twig->print;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Conatenating XML files
by graff (Chancellor) on Jul 30, 2007 at 17:39 UTC | |
by mirod (Canon) on Jul 30, 2007 at 18:10 UTC | |
by moritz (Cardinal) on Jul 30, 2007 at 18:28 UTC | |
by mirod (Canon) on Jul 30, 2007 at 18:37 UTC |