how to use xpath in camel-context.xml to check if a particular node is exist or not -
i trying develop content-based routing camel application. application @ folder src/data see if there soap request file has node <e2d:getorderdetairequest>
, file copy target/message, otherwise file copy target/other.
do know how use xpath(or other tools ) check condition (i prefer using camel-context.xml file)?
here camel-context
<route> <from uri="file://c:/src/data?noop=true"/> <choice> <when> <xpath>**???????????????????????????**</xpath> <to uri="file://c:/target/message"/> </when> <otherwise> <to uri="file://c:/target/other"/> </otherwise> </choice> </route>
and here sample of 2 different soap requests
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:e2d="http://www.abc.com/abc11ws"> <soapenv:header/> <soapenv:body> <e2d:getorderdetailrequest> <actioncode>1234</actioncode> </..> </...></...>
and
<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lsr="http://www.abc.com/abc22ws"> <soapenv:header/> <soapenv:body> <lsr:getproductdetailsrequest> <productid>12345</...> </...></...></...>
when using xpath , xml has namespaces, such soap message, must use namespaces in xpath expression well.
there details @ camel docmentation at: http://camel.apache.org/xpath
by using xml dsl in camel can declare namespace in xml tag directly such in camelcontext etc.
<camelcontext xmlns="http://camel.apache.org/schema/spring" e2d="http://www.abc.com/abc11ws"> ... <when> <xpath>/e2d:getorderdetailrequest</xpath> ...
but mind xpaths can bit tricky working correctly. , why added lognamespaces in camel 2.10. see details in bottom of page: http://camel.apache.org/xpath
Comments
Post a Comment