Hi Guillaume,

On 3/17/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:

Yeah, both Drools SE and the EIP Xpath router could benefit
such a library.  Thanks a lot, Dan !
However this won't avoid parsing the xml to a DOM because we
will still have to send it to the destination after the xpath routing
has been performed.  But I think this could still boost performances
a lot.


Well depending on the routing scenario, you could buffer the bytes that
you've parsed and send a streamsource, no? If you're simply looking to match
an xpath expression and then stop listening for xpath events and route the
the message, for example, then that could work.

 Does it support evaluating multiple xpath expression at the same time ?
I.e. you give all the xpath expressions, and they are all evaluated at the
same time, so that the first one matching will be fired .... Need to
look at SXC a bit more ...


Yes you can listen for as many xpath expressions as you want as you scan the
document.

One thing I hacked up the other day looked like this. There was a
DestinationListener which was associated with a particular xpath expression
and a destination:

public class DestinationListener extends XPathEventHandler {
   private DestinationInfo destination;

   public DestinationListener(DestinationInfo destination) {
       super();
       this.destination = destination;
   }

   @Override
   public void onMatch(XPathEvent event) throws XMLStreamException {
       throw new FoundDestinationException(destination);
   }
}

You can

try {
 evaluator.evaluate(mySource);
} catch (FoundDestinationException e) {
 // route based on e.getDestination()
}

(although the exception method is kind of ugly)

- Dan


On 3/17/07, Grant M <[EMAIL PROTECTED]> wrote:
>
> Were you thinking of integrating it with EIP routing? That could
> possibly be done.
>
> On 3/17/07, Dan Diephouse <[EMAIL PROTECTED]> wrote:
> > Hi All,
> >
> > I think I wrote something which may be of use to ServiceMix, but
> > unfortunately I don't have time to integrate it myself - so I'm going
to
> > throw it out there for everyone :-)
> >
> > I started a project called SXC - simple xml compiler - which creates
> > optimized xml parsers for various things. There is one for JAXB. But,
> the
> > one of probably the most interest to this crew is the XPath frontend.
> SXC
> > can build a streaming xpath parser for you (at runtime). This means
you
> can
> > listen for XPath events as you scan over the document. This allows for
> very
> > efficient XPath based routing. In my initial performance test it was
> about
> > 100x faster than Jaxen for locating nodes (although thats a very rough
> > benchmark, real numbers may vary!)
> >
> > We also integrated it with Drools so you can write XPath expressions
> right
> > in your rules.
> >
> > Check out these links for more information:
> >
> > http://sxc.codehaus.org
> > http://sxc.codehaus.org/XPath
> > http://sxc.codehaus.org/Drools
> >
> > The one caveat is that we support only a limited subset of XPath
> expressions
> > at the moment. But if you wanted to hack SXC, its easy enough to add
> more.
> > I'm happy to help where I can or give guidance to anyone who wants to
> > participate as well.
> >
> > Anyone up for hacking it into servicemix? :-)
> >
> > - Dan
> >
> > --
> > Dan Diephouse
> > Envoi Solutions
> > http://envoisolutions.com | http://netzooid.com/blog
> >
>



--
Cheers,
Guillaume Nodet
------------------------
Architect, LogicBlaze (http://www.logicblaze.com/)
Blog: http://gnodet.blogspot.com/




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to