Разделение файла XML на несколько файлов xml в mule4 - PullRequest
0 голосов
/ 08 мая 2020

Я использую mule 4 и пытаюсь разбить файл xml на несколько файлов с одинаковым тегом заголовка.

Входные данные:

<Data>
  <Header>
  </Header>
  <Details-1>
    <Item-1>
    </Item-1>
  </Details-1>
  <Details-2>
    <Item-2>
    </Item-2>
  </Details-2>
</Data>

Ожидаемый результат:

Файл-1:

<Data>
  <Header>
  </Header>
  <Details-1>
    <Item-1>
    </Item-1>
  </Details-1>
 </Data>

Файл 2:

<Data>
  <Header>
  </Header>
  <Details-2>
    <Item-2>
    </Item-2>
  </Details-2>
</Data>

Пытался записать для каждой области, но он либо читает только теги Details, либо только первые Details

Может ли кто-нибудь помочь мне в этом?

Спасибо

1 Ответ

0 голосов
/ 08 мая 2020

Получите полезную нагрузку и отфильтруйте поля одно за другим. Это может быть выполнено за одно преобразование как несколько переменных.

%dw 2.0
output application/xml  inlineCloseOn="empty"
var x=read('<Data>
  <Header>
  </Header>
  <Details-1>
    <Item-1>
    </Item-1>
  </Details-1>
  <Details-2>
    <Item-2>
    </Item-2>
  </Details-2>
</Data>','application/xml') 

var removeKey = (element,keyName) ->
  element mapObject (value, key) -> {
(if (key ~= keyName) {} else (
    (key): if (value is Object)
    removeKey ( value default {} , keyName )
else value
)
)
  }
---
removeKey(x,'Details-1')

вывод

<?xml version='1.0' encoding='UTF-8'?>
<Data>
  <Header/>
  <Details-2>
    <Item-2/>
  </Details-2>
</Data>

https://simpleflatservice.com/mule4/FilterOutXmlFields.html

...