kesavkolla opened a new issue #1497:
URL: https://github.com/apache/camel-quarkus/issues/1497


   Hi I'm trying to use xml based route using routes. I've a xpath expression 
which uses namespace and it's not taking defined namespaces in routes xml. How 
do I define namespaces? Here is my route xml
   
   ```xml
   <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns="http://camel.apache.org/schema/spring";
           xmlns:soap-env="http://www.w3.org/2003/05/soap-envelope";
           xsi:schemaLocation="
               http://camel.apache.org/schema/spring
               http://camel.apache.org/schema/spring/camel-spring-3.4.2.xsd";>
       <route id="myroute">
           <from uri="platform-http:/handler?httpMethodRestrict=POST"/>
           <setProperty name="MessageType">
               <xpath resultType="java.lang.String" logNamespaces="true">
                   local-name(/soap-env:Envelope/soap-env:Body/*[1])
               </xpath>
           </setProperty>
           <log message="${exchangeProperty.MessageType}"/>
           <setBody>
               <simple>
                   Hello ${body}
               </simple>
           </setBody>
       </route>
   </routes>
   ```
   
   When I try to post XML file to handler endpoint I get the following error:
   
   ```java
   org.apache.camel.language.xpath.InvalidXPathException: Invalid xpath: 
local-name(/soap-env:Envelope/soap-env:Body/*[1]). Reason: 
javax.xml.xpath.XPathExpressionException: 
javax.xml.transform.TransformerException: Prefix must resolve to a namespace: 
soap-env
       at 
org.apache.camel.language.xpath.XPathBuilder.evaluateAs(XPathBuilder.java:943)
       at 
org.apache.camel.language.xpath.XPathBuilder.evaluate(XPathBuilder.java:921)
       at 
org.apache.camel.language.xpath.XPathBuilder.evaluate(XPathBuilder.java:240)
       at 
org.apache.camel.processor.SetPropertyProcessor.process(SetPropertyProcessor.java:47)
       at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:395)
       at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
       at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
       at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
       at 
org.apache.camel.quarkus.component.platform.http.runtime.QuarkusPlatformHttpConsumer.lambda$doStart$2(QuarkusPlatformHttpConsumer.java:123)
   .....................
   Caused by: javax.xml.xpath.XPathExpressionException: 
javax.xml.transform.TransformerException: Prefix must resolve to a namespace: 
soap-env
       at 
java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:170)
       at 
org.apache.camel.language.xpath.XPathBuilder.createXPathExpression(XPathBuilder.java:1170)
       at 
org.apache.camel.language.xpath.XPathBuilder.evaluateAs(XPathBuilder.java:941)
       ... 29 more
   Caused by: javax.xml.transform.TransformerException: Prefix must resolve to 
a namespace: soap-env
       at 
java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:621)
       at 
java.xml/com.sun.org.apache.xpath.internal.compiler.Lexer.mapNSTokens(Lexer.java:637)
       at 
java.xml/com.sun.org.apache.xpath.internal.compiler.Lexer.tokenize(Lexer.java:269)
   ```
   
   Can anyone point me how to define custom namespaces?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to