#!/usr/bin/env perl # # xml_struct.pl - Quick summary of xml structure for each file argument # # $Id: xml_struct.pl 210 2008-08-06 17:28:10Z bjdean $ # use XML::Parser; my $parser = XML::Parser->new( Handlers => { Start => \&handle_start } , ErrorContext => 3 ); for my $filepath ( @ARGV ) { print "***** Parsing: ${filepath} *****\n"; eval { $parser->parsefile($filepath) }; print "XML Parsing Error: $@" if $@; print "***** End of: ${filepath} *****\n"; } sub handle_start { my ($expat, $element, %attrs) = @_; print '/' . join('/', $expat->context(), $element); if ( %attrs ) { print ' ... ATTRS: ' . join(', ', sort keys %attrs) } else { print ' ... NO-ATTRS'; } print "\n"; }