我有日志文件,其中包含一些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>
)。例如
我希望xml消息有test = test2。所以输出我应该
<fixsim xyz='tssts'
<name test="test2"
<time t=234>
</time>
</name>
</fixsim>
答案 0 :(得分: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解析器提取所需的字段。