#!/home/p1aldbw1/aldb/perl-5.12.2/bin/perl use warnings; use strict; use XML::Twig; use Data::Dumper; my $xmlstr = < CONSUMER 0 0 0 Immediate 0 OK 1 1 1 After 7 times 1 WARN 1 2 2 After 7 times 1 ALARM CONSUMER 0 0 0 Immediate 0 OK 0 0 0 Immediate 0 OK 0 0 0 Immediate 0 OK CONSUMER 0 0 0 Immediate 0 OK 1 1 1 Immediate 1 ALARM 0 0 0 Immediate 0 OK CONSUMER 0 0 0 Immediate 0 OK 1 1 1 After 7 times 1 WARN 1 2 2 After 7 times 1 ALARM CONSUMER 0 0 0 Immediate 0 OK 0 0 0 Immediate 0 OK 0 0 0 Immediate 0 OK CONSUMER 0 0 0 Immediate 0 OK 1 1 1 Immediate 1 ALARM 0 0 0 Immediate 0 OK new(twig_handlers => {NAMESPACE => \&namespace}); $twig->parse($xmlstr); my(@NAMESPACE,$APPCLASS,$INSTANCE,$PARAMETER,$PARAM_TYPE); sub namespace { my ($t, $elt) = @_; for my $appclass ( $elt->children() ) { $APPCLASS = $appclass->att('name'); for my $instance ($appclass->children()) { $INSTANCE = $instance->att('name'); for my $parameter ($instance->children()) { $PARAMETER = $parameter->att('name'); $PARAM_TYPE = $parameter->field('TYPE'); @NAMESPACE = $APPCLASS . "~" . $INSTANCE . "~" . $PARAMETER . "~" . $PARAM_TYPE; } } } } print Dumper @NAMESPACE; print "\n\n";