As Jun suggests, a custom extension function [1] is probably in order
to keep your expressions reasonably (!) short.  Assuming you want to
use JXPath without modifying any of your existing code, I would
recommend trying to write a custom function that makes the call to
retrieve the name.  Then your expression might look like
".[mynode:getName() = 'nodeName1']/.[mynode:getName() = 'nodeName2']"
etc.  ISTR JXPath having a bit of trouble processing a collection as
the root, so you might experiment with making your IMyNodeAggregate be
a property of your root, or even the value of a variable.

Thinking further, you might get some mileage out of doing some custom
interface implementations.  The discussion of maps [2] in the user
guide makes reference to the customization needed to treat any
arbitrary structure similarly to a map, which arguably your
IMyNodeAggregate is.

HTH,
Matt

[1] http://commons.apache.org/jxpath/users-guide.html#Custom_Extension_Functions
[2] http://commons.apache.org/jxpath/users-guide.html#Map_Element_Access

On Fri, Nov 2, 2012 at 11:59 AM, Jun Ouyang <[email protected]> wrote:
> Sorry I am on transit right now so i cant give u a full and proper.respond.
> But i think you can create your own jxpath function and invoke it to match
> your need. In this case the function shall check if names are equal?
> On Nov 2, 2012 9:47 AM, "we9" <[email protected]> wrote:
>
>>
>> I started to write some methods which process tree structure. The queries
>> are based on XPath. And now, I discovered JXPath. I was reading user-guide,
>> but I didn't find what I want.
>> I must be sure that there is no posibility to do this with JXPath.
>>
>> I have the following interfaces:
>> interface IMyNode
>> interface IMyNodeAggregate<C extends IMyNode> implements Collection<C>,
>> IMyNode
>>
>> I want to pass some root (instance of IMyAggregate) and using XPath
>> notation (eg. /nodeName1//nodeName2/**nodeName3) get proper IMyNode
>> instances. Name of IMyNode is avaliable by calling
>> myNode.someService().getName() so maybe some interface JXPath should be
>> implemented?
>>
>> Please answer me if JXPath can help me?
>>
>> Thank you in advance,
>> Kamil
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: 
>> user-unsubscribe@commons.**apache.org<[email protected]>
>> For additional commands, e-mail: [email protected]
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to