如何使用 Perl 的 XML::Twig 来计算 XML 中的多个标签?

发布于 2024-09-15 16:17:51 字数 480 浏览 4 评论 0原文

我正在使用 XML::Twig 使用 Perl 解析我的输入 xml。 我需要提取此 XML 中的特定节点并验证该节点以查看它是否具有多个

标记,然后计算这些 P 标记中的单词数。 例如:

<XML> 
<name>
</name>
<address>
<p id="1">a b c d </p>
<p id="2">y y y </p>
</address>
</XML>

输出:

地址有 2 个段落标签,其中 7 话。

有什么建议吗?

I am using XML::Twig to parse my input xml using Perl.
I need to extact a particular node in this XML and validate that node to see if it has multiple <p> tags and then count words in those P tags.
For example:

<XML> 
<name>
</name>
<address>
<p id="1">a b c d </p>
<p id="2">y y y </p>
</address>
</XML>

Output:

Address has 2 paragraph tags with 7
words.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半寸时光 2024-09-22 16:17:51

这是一种方法:

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 有一个专门的网站文档和教程来描述上面使用的处理程序技术。

Here is one way to do it:

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 has a dedicated website with documentation and a Tutorial to describe the handler technique used above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文