You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2013/05/01 07:54:06 UTC

Re: xml document root element name retrieval using xpath method

Hi

.setHeader("root_element", xpath("name(/*)"))

This xpath expression is maybe returning a list as NodeList. You may
want to try to use a string type instead, or try to make the
expression only select a single instance.

You can also tell Camel to try to return this as a String
.setHeader("root_element", xpath("name(/*), String.class"))




On Sun, Apr 28, 2013 at 6:44 PM, hgasmi <ho...@gmail.com> wrote:
> I am trying to retrieve the name of root element to append it separately in
> the header as follows:
>
> from("jms:axon-events")
> .setHeader("root_element", xpath("name(/*)"))
> .process(new Processor() {
>   public void process(Exchange exchange) throws Exception {
>         System.out.println("root name : " +
> exchange.getIn().getHeader("root_element", String.class));
>                                         }
>   })
>  .to("jms:streambase-events");
> }
> });
>
> However, I am getting the following exception:
>
> 2013-04-28 17:43:19.436+0100 [Camel (camel-1) thread #0 -
> JmsConsumer[axon-events]] WARN  o.a.c.c.jms.EndpointMessageListener -
> Execution of JMS message listener failed. Caused by:
> [org.apache.camel.builder.xml.InvalidXPathExpression - Invalid xpath:
> name(/*). Reason: javax.xml.xpath.XPathExpressionException]
> org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath:
> name(/*). Reason: javax.xml.xpath.XPathExpressionException
>         at
> org.apache.camel.builder.xml.XPathBuilder.doInEvaluateAs(XPathBuilder.java:873)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:756)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:726)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:154)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.builder.ProcessorBuilder$4.process(ProcessorBuilder.java:96)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
> ~[camel-core-2.10.4.jar:2.10.4]
>         at
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:104)
> ~[camel-jms-2.10.4.jar:2.10.4]
>         at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:560)
> ~[spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498)
> ~[spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)
> ~[spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)
> [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
> [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
> [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
> [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
> [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> [na:1.6.0_37]
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> [na:1.6.0_37]
>         at java.lang.Thread.run(Thread.java:662) [na:1.6.0_37]
> Caused by: javax.xml.xpath.XPathExpressionException: null
>         at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:196)
> ~[na:1.6.0_37]
>         at
> org.apache.camel.builder.xml.XPathBuilder.doInEvaluateAs(XPathBuilder.java:859)
> ~[camel-core-2.10.4.jar:2.10.4]
>         ... 46 common frames omitted
> Caused by: com.sun.org.apache.xpath.internal.XPathException: Can not convert
> #STRING to a NodeList!
>         at
> com.sun.org.apache.xpath.internal.objects.XObject.error(XObject.java:703)
> ~[na:1.6.0_37]
>         at
> com.sun.org.apache.xpath.internal.objects.XObject.nodelist(XObject.java:449)
> ~[na:1.6.0_37]
>         at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.getResultAsType(XPathExpressionImpl.java:356)
> ~[na:1.6.0_37]
>         at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:102)
> ~[na:1.6.0_37]
>         at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:183)
> ~[na:1.6.0_37]
>         ... 47 common frames omitted
>
>
> Can anyone help?
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/xml-document-root-element-name-retrieval-using-xpath-method-tp5731697.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen