You did not show us the XML so I took a guess:
use strict; use XML::Rules; my %good_division_number = map( ($_ => 1), qw(30 31 32 35 38)); my $parser = XML::Rules->new( stripspaces => 7, rules => { _default => '', Division => sub { if ( $good_division_number{ $_[1]->{DivisionNumber} }) { return '+Bedrooms' => $_[1]->{DivisionQuantity}; } else { return; } }, Divisions => 'pass', DivisionHouseRoom => sub { print "$_[1]->{HouseCode}\t$_[1]->{Bedrooms}\n"; return; }, root => 'pass', } ); open my $fh, ">", "Result.csv" or die $!; my $old = select($fh); $parser->parse(\*DATA); close $fh; select $old; print "DONE\n"; __DATA__ <root> <DivisionHouseRoom HouseCode="1"> <Divisions> <Division DivisionNumber="15" DivisionQuantity="5" /> <Division DivisionNumber="30" DivisionQuantity="2" /> </Divisions> </DivisionHouseRoom> <DivisionHouseRoom HouseCode="2"> <Divisions> <Division DivisionNumber="30" DivisionQuantity="5" /> <Division DivisionNumber="35" DivisionQuantity="7" /> </Divisions> </DivisionHouseRoom> </root>
Jenda
Enoch was right!
Enjoy the last years of Rome.
In reply to Re: Parsing huge XML file
by Jenda
in thread Parsing huge XML file
by Gangabass
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |