Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: XML::LibXML::XPathContext findnodes() Question

by runrig (Abbot)
on Dec 19, 2008 at 19:34 UTC ( [id://731637]=note: print w/replies, xml ) Need Help??


in reply to XML::LibXML::XPathContext findnodes() Question

my $xpath = ’/root and /root/element1’;
How can you be at both /root and /root/element1 at the same time (and I'm not even sure that 'and' can be used even that way)? Do you mean?:
my $xpath = ’/root | /root/element1’;
Anyway, in your first case, it returns a NodeList object (which will contain no nodes), and in the second case, it returns an empty list (if there were nodes, it would return a list of Node objects)...due to the difference in the scalar vs. list context behavior of findnodes(), as implied in the post above.

Replies are listed 'Best First'.
Re^2: XML::LibXML::XPathContext findnodes() Question
by AbrahamB (Initiate) on Dec 19, 2008 at 20:54 UTC
    I'm trying to test the existence of two separate elements.
    Like /root && /root/element1. I want true if both exist, false if one exists.

    The xpath can certainly be much better, but this is a simplified example from an xml-grep program I am working on.
    I'm trying to add the functionality to test for the existence of 2 nodes separated by ' and '. I may need to use find() or findvalue() for these types of xpaths.

    Thanks for your time!
      If /root/element1 exists, then /root certainly exists.

      You should probably use $doc->findvalue instead of findnodes because your XPath expression doesn't return a nodeset but boolean value.

      warn $doc->findvalue('/root and /root/element1'), "\n"; warn $doc->findvalue('/root and /root/nosuch'), "\n";

      yields:

      true false

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://731637]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2024-03-29 10:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found