Я использую Dataweave переформатировать XML с полезной нагрузкой в формат программа ожидает:Преобразование XML-XML в формате Dataweave «Невозможно принудить массив: a к строке:».
Payload
<reservation>
<id>1</id>
<begin_time>12:00 PM</begin_time>
<end_time>1:00 PM</begin_time>
<other_field>Misc. Data</other_field>
</reservation>
.
.
.
Ожидаемый результат.
<reservation>
<id>1</id>
<begin_time>12:00 PM</begin_time>
<schedule>
<begin_time>12:00 PM</begin_time>
<end_time>1:00 PM</end_time>
</schedule>
</reservation>
.
.
.
Dataweave Код
%dw 1.0
%output application/xml
%namespace ns0 http://www.collegenet.com/r25
---
using (r = (flatten payload.ns0#reservations.*ns0#reservation))
Reservation: r groupBy $.ns0#reservation_id pluck {
id : $.ns0#reservation_id ,
StartTime: $.ns0#reservation_start_dt,
Schedule : {
ReservationStartDate : $.ns0#reservation_start_dt,
PreEventDate : $.ns0#pre_event_dt,
EventStartDate : $.ns0#event_start_dt,
PostEventDate : $.ns0#post_event_dt,
ReservationEndDate : $.ns0#reservation_end_dt
}
}
Всякий раз, когда я пытаюсь этот код, я получаю сообщение об ошибке:
"Exception while executing: Reservation: r map { ^ Cannot coerce a :array to a :object."
Когда я пытаюсь точно такой же код, но преобразование в JSON вместо XML, преобразование работы в совершенстве. Если я удалю карту, код работает, но он объединяет все идентификаторы для всех оговорок под одним и тем же заголовком. Я не понимаю, почему Anypoint интерпретирует xml как массив, а не объекты.
Когда я попробовал, что я получил ошибку «Исключение при выполнении: с использованием (г = (расплющить payload.ns0 # оговорки * ns0 # заказа).) ^ Тип рассогласования для„придавить“оператора найдено: нулевой required: array. " Я думаю, вы нашли другие ошибки в моем коде, код в исходном сообщении был переработан, чтобы исправить это, но основная ошибка все еще существует. –
Я могу помочь больше, если вы можете по крайней мере опубликовать правильный входной формат XML и выходной формат. – AnupamBhusari