В вашем примере используется медиатор Loopback.Он будет использоваться для перемещения сообщения в выходной поток (путь ответа).Поэтому посредник Foreach разделяет сообщение и отправляет первое сообщение в путь ответа и завершает поток.
Вы можете подготовить полезную нагрузку XML и преобразовать ее в JSON, используя свойство messageType с областью видимости axis2, следующим образом.
<foreach expression="//ERROR">
<sequence>
<payloadFactory media-type="xml">
<format>
<ERROR xmlns="">
<ErrorCode>$1</ErrorCode>
<ErrorMessage>$2</ErrorMessage>
</ERROR>
</format>
<args>
<arg evaluator="xml" expression="//ECODE/text()"/>
<arg evaluator="xml" expression="//EDESC/text()"/>
</args>
</payloadFactory>
</sequence>
</foreach>
<property name="messageType" scope="axis2" value="application/json"/>
Последнее сообщение будет выглядеть так:
{
"ERROR_RESP": {
"ERROR": [
{
"ErrorCode": "ST-VALS-002",
"ErrorMessage": "Record Not Found for Branch Code-CHO:Currency 1-USD:Currency 2-MN"
},
{
"ErrorCode": "ST-SAVE-024",
"ErrorMessage": "Failed to Query Data"
}
]
}
}