Hi Andrew,
  I'm not sure if JXPath is necessarily really the right tool for this.  This 
almost just looks like a sort of hierarchical lookup.  I have a HierarchyTable 
we use at my $work for these type purposes; unfortunately I haven't yet gotten 
clearance to release it into the wild.  I plan someday to include it in 
[collections] but it may need rewriting before the Commons community would even 
agree to it, the reason being that it's somewhat heavy.  I suppose I can 
explain its implementation:  It stores hierarchical data a node per level, and 
its nodes it uses each hold a HashMap (the heavy part) to keep track of child 
nodes.  So you _could_ implement your own version of that.  If you are 
determined to use JXPath for this, for example if you just really need to be 
able to get at this information with an expression, you might be able to 
accomplish it with a custom function but I'm still afraid at some point you 
might have to parse the steps, or rely on JXPath RI
 packages/classes.

HTH,
Matt

--- On Wed, 6/3/09, Andrew Hughes <[email protected]> wrote:

> From: Andrew Hughes <[email protected]>
> Subject: [JXPath] Iterators and Pointers (on partial matches)
> To: "Commons Users List" <[email protected]>
> Date: Wednesday, June 3, 2009, 9:45 PM
> Hi Again,
> I'm trying to resolve an issue I have trying to step
> through object's
> slightly *different* to the JXPath ReferenceImpl.
> 
> Say I have String expression =
> "/Earth/Australia/NSW/Sydney/Utopia"; Since
> "Utopia" is a mythical place that never exists I'll never
> get a result from
> selectNode("/Earth/Australia/NSW/Sydney/Utopia");
> 
> Neither can I do this with an iterator:
> http://commons.apache.org/jxpath/apidocs/org/apache/commons/jxpath/JXPathContext.html#iteratePointers(java.lang.String)
> 
> "If the xpath matches no properties in the graph, the
> Iterator be empty, but
> not null."
> 
> I've tested this is and when I look for Utopia, I get an
> empty iterator....
> 
> I need an iterator that allows me see just how close I can
> get to 'Utopia':
> 
> Iterator step =
> jxpathContext.iterator("/Earth/Australia/NSW/Sydney/Utopia"
> );
> system.out.println(step.next().toString());// '' the root
> object
> system.out.println(step.next().toString());// 'Earth'
> system.out.println(step.next().toString());// 'Australia'
> system.out.println(step.next().toString());// 'NSW'
> system.out.println(step.next().toString());// 'Sydney'
> system.out.println(step.next().toString());// THROWS AN
> EXCEPTION BECAUSE
> UTOPIA DOES NOT EXIST!!!!
> 
> 
> Thanks heaps for reading (again)  :)
> 


      

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

Reply via email to