XML-преобразование DataWeave (список уникальных вложенных элементов) - PullRequest
0 голосов
/ 10 октября 2018

У меня ниже xml, и мне нужно преобразовать его, используя преобразование данных мулов.

<Colleges>
  <College>
    <name>C1</name>
    <Students>
      <Student>
        <name>s1</name>
        <dept>d1</dept>
      </Student>
      <Student>
        <name>s2</name>
        <dept>d2</dept>
      </Student>
      <Student>
        <name>s3</name>
        <dept>d3</dept>
      </Student>
      <Student>
        <name>s4</name>
        <dept>d3</dept>
      </Student>
    </Students>
  </College>
</Colleges>

Я хочу преобразовать его в формат ниже xml, получив уникальные отделы сверху xml.

<Departments>
  <name>d1</name>
  <name>d2</name>
  <name>d3</name>
</Departments>

Любое предложение будет полезным.

1 Ответ

0 голосов
/ 10 октября 2018

Это должно сработать:

%dw 1.0
%output application/xml
---
Departments: payload.Colleges.College.Students.*Student mapObject (
    name: $.dept
) distinctBy $.name

Опубликовать пример полезной нагрузки на localhost: 8081 /

    <flow name="departments">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
Departments: payload.Colleges.College.Students.*Student mapObject (
    name: $.dept
) distinctBy $.name]]></dw:set-payload>
        </dw:transform-message>
    </flow>
...