xml03.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:55:00 2010 from xml03.pl 2006/04/16 4 KB.

#!/Perl
use Data::Dumper;
use XML::Simple;
my $outfil = 'tempxout.htm';
my ($OF);
my $file = 'c:\\FG0910-1\\source\\projects\\VC8\\FlightGear.vcproj';
open $OF, ">$outfil" or die "Can not create $outfil!\n";
my $xs1 = XML::Simple->new();
my $doc = $xs1->XMLin($file);
prt( "Hello, World... loaded $file ...\n");
show_type($doc, 'doc', 1);
$a = "pearl";
$b = [ $a ];
$c = { 'b' => $b };
$d = [ $c ];
$e = { 'd' => $d };
$f = { 'e' => $e };
prt( Data::Dumper->Dump([$f], [qw(f)]) );
show_type($f, 'f', 1);
#my $chr = <STDIN>;
my $tree1 = 'Files';
my $tree2 = 'Filter';
my $tree3 = 'File';
#prt( Dumper($doc) );
prt( "Dump of WHOLE document tree ...\n" );
prt( Data::Dumper->Dump([$doc], [qw(doc)]) );
prt( "Dump of Configurations tree ...\n" );
prt( Data::Dumper->Dump([$doc->{'Configurations'}], [qw(doc-config)]) );
prt( "Dump of Files tree ...\n" );
prt( Data::Dumper->Dump([$doc->{'Files'}], [qw(doc-files)]) );
prt( "Dump of $tree1 $tree2 tree ...\n" );
prt( Data::Dumper->Dump([$doc->{$tree1}->{$tree2}], [qw(doc-files-filter)]) );
my $mh = $doc->{$tree1}->{$tree2};
prt( "Dump of mh ...\n" );
prt( Data::Dumper->Dump([$mh], [qw(mh)]) );
#my %cmh = $doc->{$tree1}->{$tree2};
#my %cmh = \$doc->{$tree1}->{$tree2};
#prt( "Dump of mh File ...\n" );
#prt( Data::Dumper->Dump([$mh->{$tree3}], [qw(mh-File)]) );
#while ( my ($key, $value) = each(%cmh) ) {
#        prt( "$key => $value\n" );
#}
#while ( my ($key, $value) = each(%$mh) ) {
#        prt( "$key => $value\n" );
#}
#for my $key ( keys %cmh ) {
#        my $value = $hash{$key};
#        print "$key => $value\n";
#}
my $do_out2 = 1;
my $do_out3 = 0;
prt( "Try enumerate of mh ...\n" );
show_type($mh, 'mh', 1);
#while( my ($k, $v) = each %{$mh} ) {
#        print "key: $k, value: $v.\n";
#}
if ($do_out2) {
   #for my $k1 (sort keys %$mh) {
   for my $k1 (keys %$mh) {
   #foreach my $k1 ($mh) {
#      prt( "k1: $k1\n" );
      show_type($k1, 'k1', 1);
      #foreach my $k2 ($k1) {
      #   prt( "k2: $k2\n" );
      #}
      if ($do_out3) {
         #if (defined %{$mh->{$k1}} ) {
         if (defined $mh->{$k1} ) {
            for my $k2 ( sort keys %{$mh->{$k1}} ) {
               prt( "\tk2: $k2\n" );
               if (defined %{$mh->{$k1}->{$k2}} ) {
                  for my $k3 ( sort keys %{$mh->{$k1}->{$k2}} ) {
                     prt( "\\tk3: $k3\n" );
                  }
               }
            }
         }
      }
   }
}
my $mh2 = $doc->{$tree1}->{$tree2}->{$tree3};
#my $mh2 = $mh->{'File'};
prt( "Dump of mh2 ...\n" );
prt( Data::Dumper->Dump([$mh2], [qw(mh2)]) );
prt( "Dump of $tree1 $tree2 $tree3 tree ...\n" );
prt( Data::Dumper->Dump([$doc->{$tree1}->{$tree2}->{$tree3}], [qw(doc-files-filter-file)]) );
#my @arr = $doc->{$tree1}->{$tree2}->{$tree3};
#my @arr = $doc->{$tree1}->{$tree2};
#my $cnt = scalar @arr;
#prt( "Got $cnt file items using $tree1, $tree2, ...\n");
#foreach my $item (@arr) {
#   prt( "$item\n" );
#}
close $OF;
sub prt {
   ###tolog (@_);
   print @_;
   print $OF @_;
}
sub show_type {
   my ($k, $name, $out) = @_;
   my $type = ref($k);
   my $msg = "$name ";
   if ($type) {
      if ($type eq 'HASH' ) {
         my $hcnt = scalar keys %$k;
         $msg .= "(HASH) hcnt=$hcnt ";
         for my $k1 (keys %$k) {
            $msg .= "key=$k1 ";
            #if (defined %{$k{$k1}} ) {
            #   my $v = %{$k{$k1}};
            if (defined $$k{$k1} ) {
               my $v = $$k{$k1};
               my $t2 = ref($v);
               if ($t2) {
                  $msg .= "\n{".show_type($v, "$k1 => ", 0).'}';
               } else {
                  $msg .= "val=$v ";
               }
            } else {
               $msg .= 'v=undef ';
            }
         }
      } elsif ($type eq 'ARRAY') {
         my $cnt = scalar @$k;
         $msg .= "(ARRAY) acnt=$cnt ";
         foreach my $t (@$k) {
            my $t2 = ref($t);
            if ($t2) {
               $msg .= "\n{".show_type($t, 'sta => ', 0).'}';
            } else {
               $msg .= "$t ";
            }
         }
      } elsif ($type eq 'CODE') {
         $msg .= "is CODE ... ";
      } elsif ($type eq 'GLOB') {
         $msg .= "is GLOB ... ";
      } else {
         $msg .= "Type is $type ... ";
         $msg .= "[$k] not HASH, ARRAY, CODE. GLOB ... ";
      }
   } else {
      $msg .= "(SCALAR) no Type [$k] ...";
   }
   prt( "$msg\n" ) if ($out);
   return $msg;
}
#eof

index -|- top

checked by tidy  Valid HTML 4.01 Transitional