如何计算字符串(XML标记)在一行中出现的次数?

时间:2011-04-14 10:02:15

标签: xml perl xml-parsing

假设我的XML文件在一行中有多个<Timestamp>标记。我正在逐行阅读文档。我如何计算每行中有多少这些标签?我想要这样的东西:

foreach "<Timestamp>" in $line {
  print "FOund";
}

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

while ($line =~ /<Timestamp>/g) {
    print "Found\n";
}

应该做的伎俩。 /g修饰符在那里非常重要。请参阅perlretut中的Using regular expressions in Perl,其中有一部分是全局匹配。

答案 1 :(得分:1)

这是XML,use XML::Twig

my $twig = XML::Twig->new( twig_roots => { Timestamp => 1 });
$twig->parsefile( $xml_file_path );
my $timestamp_count = ( my @a = $twig->root->children( 'Timestamp' ));

答案 2 :(得分:0)

'redo'控制语句重新启动当前语句块的执行。您可以使用它来编写类似的内容:

foreach $line (<>)
{
  $tag = $line =~ m/(<.*>)/;
  push @tags, $tag;
  if( $tag ) redo;
}

警告,我没有跑过这个。

希望有所帮助。