in reply to Reading attrbiutes of an XPath using XML::XPath module...
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.
|
|---|