Dmitri Plotnikov wrote:

Jess,

First of all, this discussion is probably better suited to the commons-user mailing list.


Sorry, you're right -- I crossed a line with this follow on question.

As far as your specific questions are concerned, getValue() will always return a primitive value (Number, Boolean or String) when applied to DOM. selectSingleNode() will return either a primitive value or a DOM Node.

I really need to efficiently return a primitive or a node-set/list/iterator as most appropriate, i.e. my callers pass an XPath expression and they get back the most appropriate object from these possibilities. I don't mind having to write a few lines of code to do this -- as long as it is efficient, e.g. doing the whole eval a couple times to see what's what is a non-starter. Along these lines I looked at calling iterate() instead, but it just returns an Iterator -- which does not nicely cover the use case without starting to iterate over the iterator.

If this is doable with JXPath, great -- I will give it a shot given some guidance. If not, then it won't fit under the wrapper API I wrote and use of JXPath would thus be only for new callers if/when need arose.

Dumb question (which I probably figured out last time I tried this stuff, but have no notes/recollection of):

Is there an equivalent of Xalan's one-size-fits-all "XObject xobj =
xpath.execute(...)" mechanism in JXPath?

I'm looking for a CompiledExpression.getValue() that returns an Object for which:

1. I know the various possible return types when this is applied to a
DOM.
2. The result is the most appropriate (as per the XPath standard) of
the following:
* NodeList or NodeIterator -- or something from which I can
easily implement one or both of these interfaces
* Boolean
* Number
* String

[I assume callers will apply includes castes within their XPath expressions as necessary where they expect a non-node result.]

Is there such a beast?

The one-API fits all (beans, JDOM, DOM, etc) approach makes this a bit hard for me to decipher.

--
Jess Holle


Reply via email to