Преобразование XML со значениями по умолчанию в Mulesoft
Предполагая, что у меня есть XML как
<a>
<b>Some Value</b>
</a>
...or...
<a>
<b type=1 />
</a>
...or...
<a/>
и хотите иметь некоторые значения и атрибуты, определенные в выводе, как
<a>
<b type=0>Some Value</b>
</a>
...or...
<a>
<b type=1>Empty</b>
</a>
...or...
<a>
<b type=0>Empty</b>
</a>
что будет лучшим способом сделать это в Mulesoft?
Использование скрипта с такими строками, как
if (payload.a == null ) payload.a={}
if (payload['a']['b']) payload['a']['b']={}
if (payload.a.b.type == null) payload.a.b.type=0;
или dataweave
%dw 1.0
%output application/xml
---
{
a: payload.a default { {b:{ b@type=0 }} }
}
Я запутался в синтаксисе здесь.
1 ответ
Если я правильно понимаю, что вы спрашиваете, кажется, работает следующее:
вход:
<?xml version='1.0' encoding='UTF-8'?>
<root>
<a>
<b>Some Value</b>
</a>
<a>
<b type="1" />
</a>
<a/>
</root>
Dataweave:
%dw 1.0
%output application/xml
---
root: payload.root.*a mapObject (
a: {
b @(type: $.b.@type default "0"):
$.b when $.b != null and $.b != "" otherwise "Empty"
}
)
выход:
<?xml version='1.0' encoding='UTF-8'?>
<root>
<a>
<b type="0">Some Value</b>
</a>
<a>
<b type="1">Empty</b>
</a>
<a>
<b type="0">Empty</b>
</a>
</root>