Я предполагаю, что вы имеете в виду в кодеке yaml mapper, в этом случае вы можете просто заключить в кавычки ключи, и это должно работать:
mapFrom:
- payload.xml: "payload.?xml"
- payload.version: "payload.@version.myField2"
- payload.xmlns_xsd: "payload.@xmlns:xsd"
Если вы спрашивали, как объявить событие в EPL для обработки этогоответ, вам не нужно использовать точную схему именования в определении вашего события.Вы могли бы иметь:
event Response {
string xml;
string version;
string xmlns_xsd;
}
И затем использовать карту кодеков маппера между двумя полями следующим образом:
mapFrom:
- payload.xml: "payload.?xml"
- payload.version: "payload.@version.myField2"
- payload.xmlns_xsd: "payload.@xmlns:xsd"
РЕДАКТИРОВАТЬ
Итак, первое, что остановит ваше мероприятиеРазбор в том, что ваш ответ не является допустимым JSONСтрока "ArrayOfBusinessTypeAPI {" должна быть "" ArrayOfBusinessTypeAPI ": {".Вы можете использовать только кодер mapper для анализа JSON.
Вторая причина, по которой это не работает, заключается в том, что тип содержимого установлен на text / html.В кодеке JSON для filterOnContentType установлено значение true?Если это так, это не преобразует это сообщение.
Однако, если JSON является действительным и обрабатывается кодеком JSON, вы можете правильно сопоставить событие следующим образом:
mapFrom:
- payload.id: metadata.requestId
- payload.xml: "payload.?xml"
- payload.version: "payload.xml.@version"
- payload.xsd: "payload.ArrayOfBusinessTypeAPI.@xmlns:xsd"
- payload.xsi: "payload.ArrayOfBusinessTypeAPI.@xmlns:xsi"
- payload.encoding: "payload.xml.@encoding"
, которое сопоставляется с событием:
event Resp {
dictionary<string, string> xml;
string version;
string xsd;
}