从输出中排除属性值与条件匹配的字段

Exclude fields from output whose attribute value matches to the condition

在 mule 文档 Dataweave Reference Documentation 的帮助下,我能够删除一个带有其名称的字段,但在这里我想删除一个属性值与我的条件匹配的字段。 以下是我的输入 XML.

输入XML:

<users>
  <user>
    <personal_information>
        <first_name>Emiliano</first_name>
        <middle_name>Romoaldo</middle_name>
        <last_name>Lesende</last_name>
        <ssn>001-08-84382</ssn>
    </personal_information>
    <login_information>
        <info key="username">user1</info>
        <info key="password">mypassword4321</info>
    </login_information>
  </user>
</users>

在这里,我想删除 info 元素,其 key 属性值为 password

预期输出应该是

<users>
  <user>
    <personal_information>
      <first_name>Emiliano</first_name>
      <middle_name>Romoaldo</middle_name>
      <last_name>Lesende</last_name>
      <ssn>001-08-84382</ssn>
    </personal_information>
    <login_information>
      <info key="username">user1</info>
    </login_information>
  </user>
</users>

试试这个..

%dw 2.0
output application/xml inlineCloseOn="empty"
---
users: {
      (payload.users mapObject {
        user: {
        personal_information: $.personal_information,
        login_information: $.login_information mapObject {
            (($$) : $) if($$.@key != "password")
        }
        }
      })
}

希望这能说明问题..

%dw 2.0
output application/xml inlineCloseOn="empty"
---
users: {
      (payload.users mapObject {
        user: {
        personal_information: $.personal_information,
        login_information: $.login_information mapObject(value,key,index) -> {
            ((key) : value) if(key.@key != "password")
        }
        }
      })
}