my $xs1 = XML::Simple->new(); my $doc = $xs1->XMLin($file, keyattr=>['CLASSNAME'], ForceContent=>1, ForceArray=>1); use Data::Dumper; local $Data::Dumper::Indent=1; for my $sub ( sort keys %{ $doc->{SUB} } ){ $rowCount = $tellerR; $worksheet->Cells($rowCount, $colCount)->{Value} = $sub; for my $elem ( sort keys %{ $doc->{SUB}{$sub} } ){ for my $element ( @{ $doc->{SUB}{$sub}{$elem} } ){ $worksheet->Cells($rowCount, $colCount)->{Value} = $$element{Type}; $worksheet->Cells($rowCount, $colCount)->{Value} = $$element{content}; } }