freddy longNails sub traverse { my $node = shift; print $node->nodeName() . "\n"; print $node->nodeValue() . "\n"; if( $node-> hasAttributes() ) { my @attrList = $node->attributes(); foreach my $attr (@attrList) { my $key = $attr->nodeName(); my $value = $attr->getValue(); print $key . "\t" . $value . "\n" ; } print "\n"; } if( $node-> hasChildNodes() ) { my @cns = $node->childNodes(); foreach my $cn (@cns) { my $key = $cn->getName(); if($key !~ /\#text/ ) { traverse($cn); } } } }