commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <gudnabr...@gmail.com>
Subject Re: [JXPath] Can JXPath help me with processing collection based tree?
Date Fri, 02 Nov 2012 17:18:50 GMT
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 <jouyang3@mail.ccsf.edu> 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" <we9@o2.pl> 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<user-unsubscribe@commons.apache.org>
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message