Thanks Jan
> -----Ursprüngliche Nachricht----- > Von: Raul Kripalani [mailto:[email protected]] > Gesendet: Dienstag, 30. Juli 2013 12:07 > An: [email protected] > Betreff: Re: XPath + DOM-reuse > > Just a little tip. Be careful with concurrency as DOM is not thread- > safe. > > So if you've got multiple XPath expressions or XSLT transformations > running in parallel (e.g. multicast EIP), you might get errors. > > Regards, > Raúl. > > On Tue, Jul 30, 2013 at 10:16 AM, Jan Matèrne (jhm) > <[email protected]>wrote: > > > Thanks, I will try ... > > > > Jan > > > > > -----Ursprüngliche Nachricht----- > > > Von: Claus Ibsen [mailto:[email protected]] > > > Gesendet: Dienstag, 30. Juli 2013 11:09 > > > An: [email protected] > > > Betreff: Re: XPath + DOM-reuse > > > > > > Hi > > > > > > You can convert the body to DOM first > > > > > > from > > > .convertBodyTo(Document.class) > > > choice > > > > > > > > > > > > > > > Also you can add camel-saxon to the classpath to use saxon as the > > > xpath engine. Its faster than what comes out of the box in the JDK. > > > > > > > > > You can use vtd-xml for an xpath language that can work with > > > streamed data types http://camel.apache.org/vtd-xml > > > > > > On Tue, Jul 30, 2013 at 10:57 AM, Jan Matèrne (jhm) > > > <[email protected]> > > > wrote: > > > > I have a route dispatching an exchange according to a XPath > > > evaluation > > > > to different targets. > > > > > > > > Sadly it doesnt perform very well. I think that the DOM is built > > > > for every XPath evalutation. > > > > > > > > Is it true? Can we configure Camel to reuse the DOM? > > > > > > > > > > > > > > > > I think in this Route Camel builds the same DOM 4 times. > > > > > > > > > > > > > > > > public class MyRouter extends RouteBuilder { > > > > > > > > @Override > > > > > > > > public void configure() throws Exception { > > > > > > > > Namespaces v1 = new Namespaces("v1", "..."); > > > > > > > > Namespaces v2 = new Namespaces("v2", "..."); > > > > > > > > > > > > > > > > from("direct:dispatcher") > > > > > > > > .id("dispatcher") > > > > > > > > .choice() > > > > > > > > .when().xpath("/v1:TypeA", > > > > v1).to("bean:beanA?method=execute") > > > > > > > > .when().xpath("/v1:TypeB", > > > > v1).to("bean:beanB?method=execute") > > > > > > > > .when().xpath("/v2:TypeA", > > > > v2).to("bean:beanC?method=execute") > > > > > > > > .when().xpath("/v2:TypeB", > > > > v2).to("bean:beanD?method=execute") > > > > > > > > // many more when().xpath().to() statements > > > > > > > > .end(); > > > > > > > > } > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > Jan > > > > > > > > > > > > > > > > -- > > > Claus Ibsen > > > ----------------- > > > Red Hat, Inc. > > > Email: [email protected] > > > Twitter: davsclaus > > > Blog: http://davsclaus.com > > > Author of Camel in Action: http://www.manning.com/ibsen > > > >
