If the query matches element nodes, then surely the method returns XML::XPath::Node::Element objects. These have a getAttribute attribute.
Since you appear to be just getting started, might I suggest using XML::LibXML instead of XML::XPath? It's insanely faster than anything else I timed, it has the most complete API I've seen, it's interface follows a standard (DOM), and it's one of the only parsers that does everything correctly.
Update: Looks like XML::Path doesn't handle namespaces correctly.
use strict;
use warnings;
use Test::More tests => 2;
use XML::XPath qw( );
use XML::LibXML qw( );
my $xml = <<'__EOI__';
<?xml version="1.0" ?>
<root>
<ele />
<ele xmlns="http://www.example.com/" />
</root>
__EOI__
{
my $doc = XML::XPath->new( xml => $xml );
my @nodes = $doc->findnodes('/root/ele');
is(0+@nodes, 1, 'XML::XPath');
}
{
my $doc = XML::LibXML->new()->parse_string( $xml );
my @nodes = $doc->findnodes('/root/ele');
is(0+@nodes, 1, 'XML::LibXML');
}
__END__
1..2
not ok 1 - XML::XPath
# Failed test 'XML::XPath'
# at 801019.pl line 20.
# got: '2'
# expected: '1'
ok 2 - XML::LibXML
# Looks like you failed 1 test of 2.
|