2017-02-17 12 views
0

Я отправляю мыло xml через объект обмена. Когда я пытаюсь перенаправить запрос с помощью xpath на верблюде apache, я не могу выполнить его правильно. Пожалуйста, предложите . Мой XML-объект ExchangeXpath не работает на верблюжьем маршруте

<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().

Предполагая, что у вас есть содержание SOAP Body в Exchange.body обрабатывается некоторым JAX-WS конечной XPath будет

/Choice/Selector или /Choice/Selector/text() если это элемент со смешанным содержанием

BTW : если ваш Envelope - настоящий пример, вы пытаетесь протестировать, не забудьте исправить свой XML - у вас есть неправильный <Selector>1</selector> Названия тегов чувствительны к регистру. Он должен быть <Selector>1</Selector>

+1

И вы должны использовать сопоставление пространства имен и для работы xpaths. Прочтите документы: http://camel.apache.org/xpath –

 Смежные вопросы

  • Нет связанных вопросов^_^