Как мне обработать дочерние узлы с тем же именем? - PullRequest
3 голосов
/ 10 сентября 2011

У меня есть xml с 1000 сущностями, как в приведенном ниже шаблоне:

<data>
  <row> ded</row>
   <row> def </row>
   <row> fff </row>
   <row> fff </row>

</data>

Мне нужно проанализировать его с помощью XML :: Twig.

Я использую следующий код:

my $twig = XML::Twig->new(
twig_handlers => {
  data => sub {

        my $x1 = $_->first_child_trimmed_text('row');
        print $x1;
        #I need also here to run over the other rows and extract them

  }
} );

Как мне бегать по строкам и извлекать их (они имеют одинаковые имена)?

Ответы [ 2 ]

6 голосов
/ 10 сентября 2011

Вы можете использовать метод XML :: Twig children_trimmed_text() - он выдаст вам список дочерних элементов, который вы можете затем перебрать.Как то так:

data => sub {
    my @row_children = $_->children_trimmed_text( 'row' );
    for my $row ( @row_children ) {
       print "$row\n";
    }
}
2 голосов
/ 11 сентября 2011
twig_handlers => {
#   '/data/row'
#   '//row'
#   'row'
   '//data/row'
          => sub { print $_->get_trimmed_text },
}
...