используя Perl вставьте строку xml в узел - PullRequest
3 голосов
/ 24 июня 2011

У меня есть следующий xml как строка в переменной $ myXML, и мне нужно вставить ее в root-> grouping

<mydata seq="ee">
    <subdata name="bla" value="bla" />
</mydata>

Вышеупомянутый xml необходимо вставить внутрь root-> grouping

<root>
  <grouping>    
  </grouping>
</root>

В настоящее время я использую XML :: Twig, так что идеально, если бы вы могли помочь мне с этим

редактирование: Я имею дело со сложной структурой , которая находится в файле. Мне нужен способ загрузить этот XML в Perl и вставить мою строку XML в качестве узла. Также в моем случае уже содержит несколько узлов.

Ответы [ 3 ]

3 голосов
/ 26 июня 2011

Вот как я бы это сделал: я бы создал элемент из XML в $myXML, а затем добавил его как последний дочерний элемент grouping:

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

my $myXML='<mydata seq="ee"><subdata name="bla" value="bla" /></mydata>';

my $t= XML::Twig->new( twig_handlers => { grouping => sub { grouping( $myXML, @_); }, })
                ->parsefile( "so_insert.xml");

$t->print;
exit;

sub grouping
  { my( $xml, $t, $grouping)= @_;
    my $new_elt= XML::Twig::Elt->parse( $xml);
    $new_elt->paste( last_child => $grouping);
  }
2 голосов
/ 24 июня 2011

Используйте обработчик веток для вставки содержимого при просмотре тега группировки.

Предполагая, что ваши корневые / групповые данные находятся в foo.xml:

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

my $myXML = <<'EOT';
<mydata seq="ee">
    <subdata name="bla" value="bla" />
</mydata>
EOT

my $xml = XML::Twig->new(
    pretty_print => 'indented',
    twig_handlers => {
        grouping => sub { $_->set_text($myXML)->set_asis; }
    });

$xml->parsefile("foo.xml") or die "Failed parse of foo.xml: $@\n";
$xml->print;
0 голосов
/ 24 июня 2011

Я что-то упустил?

$myXML = '<root><grouping>' . $myXML . '</grouping></root>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...