#!perl use strict; use XML::LibXML; use XML::LibXML::XPathContext; my $dom = XML::LibXML->load_xml( location => 'phone.xml' ); my $xml = XML::LibXML::XPathContext->new($dom); $xml->registerNs('ns1','http://schemas.cisco.com/ast/soap'); my $xpath = "//ns1:CmNodes /ns1:item /ns1:ReturnCode[text() = 'Ok']"; my @nodes = $xml->findnodes($xpath); for my $node (@nodes){ my $name = $node->findvalue('../ns1:Name'); print $name."\n"; my @dev = $node->findnodes('../ns1:CmDevices/ns1:item'); for my $dev (@dev){ my $name = $dev->findvalue('ns1:Name'); my $status = $dev->findvalue('ns1:Status'); my $desc = $dev->findvalue('ns1:Description'); print " $name $status $desc\n"; } }