オンラインで見つけた、XML::Parser を使用して XML ドキュメントの一意の要素と各要素の出現回数を識別する Perl スクリプトを変更しようとしています。Perl スクリプトとそのドキュメントは、次の場所にあります。
use strict;
use warnings;
use XML::Parser;
use File::Find;
@ARGV or die "usage: xmlelements DIR [DIR ...]\n";
my %element_count;
my $parser = XML::Parser->new(
Handlers => {
Start => \&start_element,
},
);
find \&process_xml, @ARGV;
print "$_ ($element_count{ $_ })\n"
for sort keys %element_count;
exit;
sub process_xml {
$parser->parsefile( $_ )
if substr( $_, -4 ) eq '.xml' and -f;
}
sub start_element {
my ( $expat, $element, @attrval ) = @_;
$element_count{ $element }++;
}
これにより、次のような出力が生成されます。
Account (15614)
Account_No (15504)
Active (15614)
Activity (6658)
Address (28098)
Address_1 (27548)
Address_2 (2033)
Address_3 (62)
Address_City (15)
私の質問は、出力に親ノードを含めるにはどうすればよいですか?