Новое в Camel, и я пытаюсь проанализировать ошибку ответа xml. В контексте camel мне нужно определить, существует ли определенное значение в файле ошибки и обрабатывать его иначе, чем другие ошибки.Отзыв об ошибке в Camel
Другие ошибки используют серию, когда заявления:
<when>
<xpath>/abc:ErrorResponse/abc:Error/abc:Message/.</xpath>
<setHeader headerName="RESPONSE_STRING">
<xpath resultType="java.lang.String">/abc:ErrorResponse/abc:Error/abc:Message/.</xpath>
</setHeader>
<setHeader headerName="MY_DATA_FIELD"><constant>Error</constant></setHeader>
<to uri="def:doErrorStuff" pattern="InOnly"/>
</when>
<when>
<xpath>/ghi:ErrorResponse/ghi:Error/ghi:Message/.</xpath>
<setHeader headerName="RESPONSE_STRING">
<xpath resultType="java.lang.String">/ghi:ErrorResponse/ghi:Error/ghi:Message/.</xpath>
</setHeader>
<setHeader headerName="MY_DATA_FIELD"><constant>Error</constant></setHeader>
<to uri="def:doErrorStuff" pattern="InOnly"/>
</when>
Мой файл ошибок XML имеет внешний элемент ошибки с дочерним элементом «Код». Мне нужно разобрать значение кода элемента UPDATE: ВОТ XML I AM PARSING
<ErrorResponse xmlns="http://myhost/location1/">
<Error>
<Type>reserved</Type>
<Code>TEXT_I_NEED_TO_PARSE_IN_WHEN_STATEMENT</Code>
</Error>
<RequestId>some_id</RequestId>
</ErrorResponse>
Я использовал комбинацию XPath и «простой», чтобы сделать чек. Например:
<when>
<xpath>/ghi:ErrorResponse/ghi:Error/ghi:Message/.</xpath>
<when>
<simple>${in.body.code} == 'StringIAmSearchingFor'</simple>
<!-- Do Stuff --!>
</when>
</when>
Тем не менее, я не получаю ответ, которого я ожидаю.
1. Что-то не так с этим подходом или синтаксисом?
2. Есть ли способ объединить двойной при компоновке, чтобы они были вместе и вместе. В противном случае, если я добавлю свой оператор «когда» только перед существующими двумя, существующий оператор «ghi» when никогда не будет выполнен (утверждения xpath совпадают).
Пожалуйста, разместите пример ввода. –
@Jens - не проблема, отправил xml – Tyrian