0

我有日志文件,其中包含一些 xml 消息,例如...

<fixsim xyz='tststtsts'>
  <name test="test1">
    <time t=234>
    </time>
  </name>
</fixsim>


here some normal log text
whoiwoei
blsdbndsnb

<fixsim xyz='tssts'
  <name test="test2"
<time t=234>
    </time>
  </name>
</fixsim>

等等....

从上面的日志文件中,我想在from <Fixsim> to </fixsim>某些条件下获取 xml 消息 ()。例如

我想要具有 test=test2 的 xml 消息。所以作为输出我应该得到

<fixsim xyz='tssts'
  <name test="test2"
<time t=234>
    </time>
  </name>
</fixsim>
4

1 回答 1

4

以下将获取 XML 文档:

process($_) for $log =~ m{<fixsim.*?</fixsim>}sg;

所以会

my $xml;
while (<$log_fh>) {
   if ( my $count = m{<fixsim} .. m{</fixsim>} ) {
      $xml .= $_;

      if ($count =~ /E0\z/) {
          process($xml);
          $xml = undef;
      }
   }

   process($xml) if defined($xml);
}

获得 XML 后,您可以使用自己喜欢的 XML 解析器提取所需的字段。

于 2013-09-06T19:37:05.320 回答