我使用XML::Twig使用Perl解析输入xml。
我需要访问此XML中的特定节点并验证该节点以查看它是否具有多个<p>
标记,然后计算这些P标记中的单词。
例如:
<XML>
<name>
</name>
<address>
<p id="1">a b c d </p>
<p id="2">y y y </p>
</address>
</XML>
输出:
地址有2个段落标签,带7个 词语的
有什么建议吗?
答案 0 :(得分:4)
这是一种方法:
use strict;
use warnings;
use XML::Twig;
my $xfile = q(
<XML>
<name>
</name>
<address>
<p id="1">a b c d </p>
<p id="2">y y y </p>
</address>
</XML>
);
my $t = XML::Twig->new(
twig_handlers => { 'address/p' => \&addr}
);
my $pcnt = 0;
my $wcnt = 0;
$t->parse($xfile);
print "Address has $pcnt paragraph tags with $wcnt words.\n";
sub addr {
my ($twig, $add) = @_;
my @words = split /\s+/, $add->text();
$wcnt += scalar @words;
$pcnt++;
}
__END__
Address has 2 paragraph tags with 7 words.
XML::Twig有一个专门的网站,上面有文档和教程,用于描述上面使用的处理程序技术。