use strict; use warnings; use Data::Dumper; use XML::Twig; my $twig=XML::Twig->new(); $twig->xparse(shift); traverse($twig->root); sub traverse { my ($t) = @_; my $elt=$t; $elt=$t->att('#elt') if $t->att('#elt'); print "gi=|",$t->gi,"|\tprefix=|",$elt->ns_prefix,"|\tnamespace=|",$elt->namespace,"|\n"; foreach my $c ($t->children) { if (@ARGV) { my $copy = $c->copy; $copy->set_att( '#elt', $c); traverse($copy); } else { traverse($c); } } }