On Wed, Sep 12, 2012 at 12:47:42PM -0400, Jason Viers wrote:
> On 9/12/2012 11:58, Ramon F Herrera wrote:
> >which is easy enough to parse. Next, I made a discovery: If I add
> >an extra function at the end of the string, I obtain exactly what
> >I need:
> >XPath query: /table/properties/length/text()
> >Result: 62.42
> >That function works properly with all XPath implementations that I
> >have tried, EXCEPT with libxml.
> >Result (1 nodes):
> >= node "text": type 3
> >I need the last step, after the node set. How do I retrieve that end item?
> 
> You're on the right path, you just need xmlNodeGetContent on that node.
> http://xmlsoft.org/html/libxml-tree.html#xmlNodeBufGetContent
> 
> It would be best to xpath for "/table/properties/length" and use
> xmlNodeGetContent on the element, though, in case there's more than
> one text node or the text isn't directly in a text node child of
> length, such as:
> <length units="ft">62<![CDATA[.42]]></length>
> 
> "/table/properties/length/text()" would give you "62", but
> "/table/properties/length" gives 62.42

  Note that the XPath data model expect text and CDATA nodes to be
merged, so when you parse XML for XPath consumption you should give
the XML_PARSE_NOCDATA flag to be sure you will get the result intended
by the spec.

 Another simpler solution is just the XPath expression

   "string(/table/properties/length)"

which will return a string with the content (if found)

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
[email protected]  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to