Вход, может иметь n количество сущностей и несколько значений в атрибуте: Вот базовый пример:
<?xml version="1.0" encoding="UTF-8"?>
<entityset>
<entity name="dog">
<attribute code="app">
<value>my application</value>
</attribute>
<attribute code="1code">
<value>dog1value</value>
</attribute>
<attribute code="">
<value>dog2value</value>
</attribute>
</entity>
<entity name="cat">
<attribute code="app">
<value>my cat application</value>
</attribute>
<attribute code="1code">
<value>cat1value</value>
</attribute>
<attribute code="2code">
<value>cat2value</value>
</attribute>
</entity>
</entityset>
Мой DW для начинающих:
{
insert: payload.entityset.*entity map {
id: $.@name,
name: $.attribute.value when $.attribute.@code=='1code' otherwise '',
owner: $.attribute.value when payload.entityset.entity.attribute.@code=='2code' otherwise ''
}
}
Желаемый результат:
<insert>
<record>
<id>dog</id>
<name>dog1value</name>
<owner>dogvalue2</owner>
</record>
<record>
<id>cat</id>
<name>cat1value</name>
<owner>cat2value<owner>
</record>
</insert>
Что я не могу понять, так это как создать условие if attribute. @ Code == "1code" затем сопоставить это attributa.value с. и атрибуты code2 для владельца. Я читаю ввод из файла xml. Когда я пытаюсь ввести «карту», я всегда получаю сообщение об ошибке:
Стек исключений: 1. Невозможно преобразовать массив: в объект: (com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionException) com.mulesoft.weave.model.values.coercion.ObjectTypeCoercionValue: 31 (null) 2. Исключение при выполнении: insert: payload.entityset. * Entity map {^ Невозможно привести: массив к: объекту (com.mulesoft.weave.mule.exception.WeaveExecutionException) com.mulesoft.weave.mule.WeaveMessageProcessor $ WeaveOutputHandler : 166 (пусто)