如何处理具有相同名称的子节点?

时间:2011-09-10 09:02:33

标签: perl xml-twig

我有1000个实体的xml,如下面的模板:

<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 个答案:

答案 0 :(得分:6)

你可以使用XML :: Twig方法children_trimmed_text() - 它会给你一个孩子的列表,然后你可以迭代它们。像这样:

data => sub {
    my @row_children = $_->children_trimmed_text( 'row' );
    for my $row ( @row_children ) {
       print "$row\n";
    }
}

答案 1 :(得分:2)

twig_handlers => {
#   '/data/row'
#   '//row'
#   'row'
   '//data/row'
          => sub { print $_->get_trimmed_text },
}