如何迭代和过滤xml标签并检查mule中dataweave函数的条件

时间:2017-02-20 16:29:48

标签: mule dataweave

输入到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。

谢谢,

1 个答案:

答案 0 :(得分:2)

过滤等于&#34;失败&#34;的状态列表。如果它没有返回记录,则表示所有状态均为成功,然后为真。否则(它返回多个记录)false。

status: (sizeOf (payload.root.*client.status filter $ == "failed")) == 0

或者

status: not (payload.root.*client.status contains "failed")