#!/usr/bin/perl -- use strict; use warnings; use Cwd; use Win32::OLE; use XML::Simple; my $dir = cwd(); opendir(DIR, "."); my @file = grep(/\.xml$/,readdir(DIR)); closedir(DIR); use Data::Dumper; local $Data::Dumper::Indent=1; #print Dumper($doc); my $xs1 = XML::Simple->new(); my $doc = $xs1->XMLin($file[0], keyattr=>[], ForceContent=>1, ForceArray=>1); for my $sub1 ( sort keys %{ $doc } ){ unless (ref($doc->{$sub1})) { print "$doc->{$sub1} is not a reference at all.\n"; next; } my $count = @{ $doc->{$sub1} }; print "\n$sub1\t"; for (my $i=0; $i <= $count; $i++) { for my $sub2 ( sort keys %{ $doc->{$sub1}[$i] } ){ unless (ref($doc->{$sub1}[$i]{$sub2})) { print "$doc->{$sub1}[$i]{$sub2} is not a reference at all.\n"; next; } my $count2 = @{$doc->{$sub1}[$i]{$sub2}}; for (my $j=0; $j <= $count2; $j++) { for my $sub3 ( sort keys %{ $doc->{$sub1}[$i]{$sub2}[$j] } ){ unless (ref($doc->{$sub1}[$i]{$sub2}[$j]{$sub3})) { print "$doc->{$sub1}[$i]{$sub2}[$j]{$sub3} is not a reference at all.\n"; next; } my $count3 = @{$doc->{$sub1}[$i]{$sub2}[$j]{$sub3}}; print "\n\t$sub2\t$sub3($count3)"; for (my $k=0; $k <= $count3; $k++) { print "\n"; for my $sub4 ( sort keys %{ $doc->{$sub1}[$i]{$sub2}[$j]{$sub3}[$k] } ){ print "\n\t\t\t$sub4 : "; print $doc->{$sub1}[$i]{$sub2}[$j]{$sub3}[$k]{$sub4}; } } } } } } }