输入到Dataweave
<root>
<client>
<name>abc<name>
<status>success</status>
</client>
<client>
<name>def<name>
<status>success</status>
</client>
<client>
<name>ghi<name>
<status>success</status>
</client>
<client>
<name>jkl<name>
<status>failed</status>
</client>
<client>
<name>mno<name>
<status>success</status>
</client>
</root>
预期产出:
<root>
<clients>
<name>abc<name>
<name>def<name>
<name>ghi<name>
........
</clients>
<status>false</status> // if all status are success then true otherwise false
</root>
在这里,我可以迭代每个xml标记,并使用dataweave在clients标记下映射名称值。但我必须为所有状态映射单个输出。 即当一切都成功时,我的状态将是真实的,如果任何一个状态失败,我的状态将是错误的。 为此,我们必须编写一个函数,它将迭代每个xml标记,并且必须根据条件返回输出trur或false。
谢谢,
答案 0 :(得分:2)
过滤等于&#34;失败&#34;的状态列表。如果它没有返回记录,则表示所有状态均为成功,然后为真。否则(它返回多个记录)false。
status: (sizeOf (payload.root.*client.status filter $ == "failed")) == 0
或者
status: not (payload.root.*client.status contains "failed")