我有一个需要解析的xml。 我的
$parser = new XML::Parser(Handlers =>
{Init => \&handle_Init, Start => \&handle_Start,
Char => \&handle_Char, End =>\&handle_End,
Final => \&handle_Final});
$parser->parsefile("ababab.xml");
在handle_Char子例程中,只要找到特定标记及其值,我就想停止。
如何实现它?
答案 0 :(得分:4)
您可以在eval中包含对parsefile的调用,然后在处理程序中死掉。然后,您需要测试$ @以查看解析是否成功
一个例子:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Parser;
my $p = XML::Parser->new(Handlers => { End => sub { if( $_[1] eq 'e') { die "ok"; } } });
print "parsing well-formed xml: ";
eval { $p->parse( '<d><b/><e/></d>'); };
if( $@ =~ m{^ok} ) { print "success\n"; } else { print $@; }
print "parsing malformed xml: ";
eval { $p->parse( '<d<b/><e/></d>'); };
if( $@ =~ m{^ok} ) { print "success\n"; } else { print $@; }
那就是说我不会使用XML :: Parser。 Perl5 wiki有一个list of recommended modules用于XML解析。