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

时间:2019-09-02 03:04:12

标签: dataweave mule4

借助m子文档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属性值为 password

key元素

预期输出应为

<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>

2 个答案:

答案 0 :(得分:3)

尝试一下。

%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")
        }
        }
      })
}

答案 1 :(得分:0)

希望这很清楚。

%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")
        }
        }
      })
}