I have a custom message -
etlms~
Message-Profile-Id=FPC-MAIN-REQUEST|
Correlation-Id=123456_ABCDEFG|
~<?xml version="1.0" encoding="UTF-8"?>
<ServicesRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../ServicesRequest1.xsd"
MessageType="Request">
<ServiceRequested status="accepted"/>
</ServicesRequest>
Using the preprocessor, I am getting the xml message from the custom in
process method and setting it in exchange.getIn().setBody(etlmsXml).
I have also added convertBodyTo
from(endpointuri)
.process(new etlmsXmlProcess)
.convertBodyTo(String.class,"UTF-8")
Now for this message, I am trying to use Content Based Routing - XPATH.
But for the above message I am getting an error -
org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath:
/ServiceRequest/@MessageType[@MessageType='Request']. Reason:
javax.xml.xpath.XPathExpressionException: org.xml.sax.SAXParseException:
Content is not allowed in prolog.
Note: I am using Camel DSL.
etlms~
Message-Profile-Id=FPC-MAIN-REQUEST|
Correlation-Id=123456_ABCDEFG|
~<?xml version="1.0" encoding="UTF-8"?>
<ServicesRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../ServicesRequest1.xsd"
MessageType="Request">
<ServiceRequested status="accepted"/>
</ServicesRequest>
Using the preprocessor, I am getting the xml message from the custom in
process method and setting it in exchange.getIn().setBody(etlmsXml).
I have also added convertBodyTo
from(endpointuri)
.process(new etlmsXmlProcess)
.convertBodyTo(String.class,"UTF-8")
Now for this message, I am trying to use Content Based Routing - XPATH.
But for the above message I am getting an error -
org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath:
/ServiceRequest/@MessageType[@MessageType='Request']. Reason:
javax.xml.xpath.XPathExpressionException: org.xml.sax.SAXParseException:
Content is not allowed in prolog.
Note: I am using Camel DSL.