my $B = $doc->selectNodes("A/B"); if (defined($B) ) { for my $node (@$B) { my $cnodes = $node->childNodes; for my $cnode (@$cnodes) { my $val = $cnode->nodeValue; print qq|Value of B is: $val\n|; } } } my $D = $doc->selectNodes("A/C/D"); if (defined($D) ) { for my $node (@$D) { my $attr = $node->getAttribute("d_attribute"); print qq|Attribute 'd_attribute' of D is: $attr\n|; my $cnodes = $node->childNodes; for my $cnode (@$cnodes) { my $val = $cnode->nodeValue; print qq|Value of D is: $val\n|; } } } #### Value of B is: B value Value of B is: B value Attribute 'd_attribute' of D is: d_attribute_value Value of D is: D_Value Attribute 'd_attribute' of D is: d_attribute_value Value of D is: D_Value