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>

等々....

上記のログ ファイルから、条件付きで xml メッセージ ( from <Fixsim> to </fixsim>) を取得したいと考えています。例えば

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 に答える