note
Gangabass
<p>Thank you for pointing me right direction. I have rewritten it:</p>
<c>
use strict;
use warnings;
use XML::Twig;
my %bedrooms;
my @bedrooms;
my @good_division_numbers = qw( 30 31 32 35 38 );
my $xml =
XML::Twig->new( twig_roots => { DivisionHouseRoom => \&count_bedrooms, } );
$xml->parsefile( 'divisionhouserooms-v3.xml');
#$xml->parsefile('test.xml');
print "=" x 40, "\n";
open my $fh, ">>", "Result.csv" or die $!;
foreach my $house_code (@bedrooms) {
print $fh join( "\t", $house_code, $bedrooms{$house_code} ), "\n";
}
close $fh;
sleep 1;
sub count_bedrooms {
my ( $twig, $element ) = @_;
my $house_code = $element->first_child_text('HouseCode');
print $house_code, "\n";
unless ( exists $bedrooms{$house_code} ) {
push @bedrooms, $house_code;
}
my ($divisions) = $element->children('Divisions');
my @divisions = $divisions->children('Division');
for my $division (@divisions) {
next
unless grep { $_ eq $division->first_child_text('DivisionNumber') }
@good_division_numbers;
$bedrooms{$house_code} +=
$division->first_child_text('DivisionQuantity');
}
$element->purge;
}
</c>
923992
924005