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]
