2017-02-17 5 views
0

Exchangeオブジェクト経由でsoap xmlを送信しています。私がapache camelでxpathを使用してリクエストをルーティングしようとすると、正しく実行できません。 Exchange本体xmlはXpathがラクダルートで動作していません

<Envelope><Header> 
    </Header> 
    <Body> 
    <Choice> 
     <Selector>1</selector> 
    </Choice> 
    </Body> 
</Envelope> 

マイキャメルルート

from(direct:XX) 
    .to(when(xpath("body()/Choice/Selector/.",String.class)=='1') 
    .to("direct:X") 
    .otherwise() 
    .to("direct:Y") 
+1

xpathがどのように動作し、名前空間についての心配 –

答えて

1
  1. あなたの封筒は、そのように見えることはできません。

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
        <soapenv:Header/>  
        <soapenv:Body> 
        ... 
    
  2. body()/Choice/Selector/.は、XPathではない:それはのようなものでなければなりません。 XPathにbody()のようなものはありません。それは

    ところで、混合コンテンツを持つ要素である場合

XPathは

/Choice/Selectorまたは/Choice/Selector/text()になりますあなたには、いくつかのJAX-WSエンドポイントによって処理Exchange.bodyにおけるSOAPボディコンテンツを持っていると仮定すると、あなたのEnvelopeが本当の例であれば、あなたはあなたのXMLを修正することを忘れないでください - あなたは間違っています。<Selector>1</selector>タグ名は大文字と小文字が区別されます。 <Selector>1</Selector>

+1

xpathが動作するためには名前空間マッピングも使用する必要があります。ドキュメントを読む:http://camel.apache.org/xpath –

関連する問題