Как объединить два XML-атрибута в DataWeave

Как объединить два атрибута XML в DataWeave из вывода списка?

Моя полезная нагрузка:

[{productDetails={ean=null, variation-attribute-id=Colour, attribute-id=Colour, 
attribute=System Value, varaints=123, display-name=Colour}] 

Я хочу, чтобы результат выглядел так:

<variation-attribute variation-attribute-id="Colour" attribute-id="Colour">

Я пытался использовать оператор ++, но он выдает ошибку, например, строку для объекта.


person Rohan Shinde    schedule 27.09.2015    source источник
comment
требуемый вывод похож на ‹вариация-атрибута вариация-атрибут-идентификатор=Цвет атрибут-идентификатор=Цвет›   -  person Rohan Shinde    schedule 27.09.2015


Ответы (1)


Для этого вам нужно будет написать что-то вроде этого:

%dw 1.0
%output application/xml
---
variations: {
  (payload map {
    variation-attribute @(
      variation-attribute-id: $.productDetails.variation-attribute-id, 
      attribute-id: $.productDetails.attribute-id): ""
  }) 
}

(Я предполагаю, что элемент variations является корнем)

Здесь для каждого элемента в вашем списке (payload) вы должны сгенерировать variation-attribute, поэтому вам нужна операция map.

Атрибуты указываются следующим образом:

<element> @(<attrName>: <attrValue>, <attrName2>: <attrValue2>, ...)

Круглая скобка, окружающая payload map ..., оценивает заключенное выражение и "заполняет" значение variations его результатом (который представляет собой массив из variation-attribute элементов)

Примечание. Я помещаю пустую строку в качестве текста, поскольку в настоящее время нет возможности закрыть встроенные теги.

person Shoki    schedule 28.09.2015