Foo
####
my $parser = XML::LibXML->new();
my $data = $parser->parse_string ( $xml );
$data->setNamespace ( 'urn:foo', 'x' );
for my $first_sub ( $data->findnodes ('/x:root/x:first_sub')) {
my $name = $first_sub->getAttribute('name');
$first_sub->setNamespace ('urn:foo','x');
for my $second_sub ( $first_sub->findnodes ('./x:second_sub')) {
my $id = $second_sub->getAttribute('id');
$second_sub->setNamespace ('urn:foo','x');
for my $third_sub ( $second_sub->findnodes('./x:third_sub')) {
# do something with the values
}
}
}