【问题标题】:Exclude fields from output whose attribute value matches to the condition从输出中排除属性值与条件匹配的字段
【发布时间】:2019-09-04 01:20:46
【问题描述】:

在 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 属性值为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>

【问题讨论】:

    标签: dataweave mule4


    【解决方案1】:

    试试这个..

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

    【讨论】:

    • 谢谢。它就像魅力一样。我可以描述一下这个解决方案吗?
    • 在下面添加了另一个答案。我在上面发布的答案中所做的只是使用 $$ 和 $(mapObject 中键和值的固有表示)。我所做的就是从 login_information mapObject 中获取键值对,其中键上的属性 (key.@>) 不等于字符串“password”
    【解决方案2】:

    希望这可以说清楚..

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

    【讨论】:

    • 很清楚。所以基本上我们是根据条件过滤输出。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2015-01-14
    • 2022-10-14
    • 2018-01-09
    • 2012-08-31
    • 2021-11-18
    相关资源
    最近更新 更多