Re: [xml] What does it mean if I get an XML_NODESET with nodesetval == NULL?



On Fri, Mar 01, 2013 at 01:55:19PM +0000, Richard W.M. Jones wrote:
I have some code (below) which segfaults because xmlXPathEvalExpression
returns:

  (gdb) print *labelObj
  $1 = {type = XPATH_NODESET, nodesetval = 0x0, boolval = 0, floatval = 0, 
    stringval = 0x0, user = 0x0, index = 0, user2 = 0x0, index2 = 0}

I have previously thought it was impossible for xmlXPathEvalExpression
to return something != NULL but with nodesetval == NULL, but obviously
it can do this.

But what does it mean?

  it means the evaluation type is a node set but the query failed
to return anything. Empty node sets may either have nodesetval as NULL
or nodesetval->nodeNr == 0 in the XPath return values.

It doesn't seem to mean "no nodes", because when I use the standalone
'xpath' program (which AIUI uses libxml2) it returns a single matching
node.

 it is Perl which use XML::XPath and i don't think it uses libxml2

Rich.

  But i agree there is something going on, libxml2 find the nodes

thinkpad:~/XML -> xmllint --shell tst.xml
/ > xpath /domain/seclabel[ model='selinux']/label
Object is a Node Set :
Set contains 1 nodes:
1  ELEMENT label
/ > xpath /domain/seclabel[ model='selinux']/imagelabel
Object is a Node Set :
Set contains 1 nodes:
1  ELEMENT imagelabel
/ >

Daniel
-- 
Daniel Veillard      | Open Source and Standards, Red Hat
veillard redhat com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]