Create a context and assign prefixes to the namespaces. The prefixes you choose need not match those used in the document, if any.
use XML::LibXML::XPathContext qw( ); my $xpc = XML::LibXML::XPathContext->new(); $xpc->registerNs('nc', 'urn:ietf:params:xml:ns:netconf:base:1.0'); $xpc->registerNs('j', 'http://xml.juniper.net/junos/12.3R9/junos');
You don't appear to be using the second namespace in your queries. If it's the case, you don't need to register a prefix for it.
Then change $node->find*($xpath) to $xpc->find*($xpath, $node), and use the defined prefixes to specify the namespace of the elements you want to locate.
$xpc->findnodes( "/nc:rpc-reply/nc:vlan-information/nc:vlan", $doc) $xpc->findnodes( "nc:vlan-name|nc:vlan-tag|.//nc:vlan-member-interface", $vlan)
(Removed needless instances of "./".)
In reply to Re: XML namespace question
by ikegami
in thread XML namespace question
by perlific
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |