【问题标题】:DataWeave XML transform (list unique nested elements)DataWeave XML 转换(列出唯一的嵌套元素)
【发布时间】:2018-10-10 12:19:52
【问题描述】:

我有以下 xml,需要使用 mule 数据编织转换对其进行转换。

<Colleges>
  <College>
    <name>C1</name>
    <Students>
      <Student>
        <name>s1</name>
        <dept>d1</dept>
      </Student>
      <Student>
        <name>s2</name>
        <dept>d2</dept>
      </Student>
      <Student>
        <name>s3</name>
        <dept>d3</dept>
      </Student>
      <Student>
        <name>s4</name>
        <dept>d3</dept>
      </Student>
    </Students>
  </College>
</Colleges>

我想通过从上面的xml获取独特的部门来将它转换为下面的xml。

<Departments>
  <name>d1</name>
  <name>d2</name>
  <name>d3</name>
</Departments>

任何建议都会有所帮助。

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    这应该可以解决问题:

    %dw 1.0
    %output application/xml
    ---
    Departments: payload.Colleges.College.Students.*Student mapObject (
        name: $.dept
    ) distinctBy $.name
    

    将示例负载发布到 localhost:8081/

        <flow name="departments">
            <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
            <dw:transform-message doc:name="Transform Message">
                <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    ---
    Departments: payload.Colleges.College.Students.*Student mapObject (
        name: $.dept
    ) distinctBy $.name]]></dw:set-payload>
            </dw:transform-message>
        </flow>
    

    【讨论】:

    • 这不起作用有几个原因。首先,.*Student 返回一个数组,mapObject 需要一个对象。其次,distinctBy $.name 将失败,因为 $.name 将返回 null(您正在跳过 Departments)。
    • @jerney 我谦虚地请您尝试随示例请求提供的 dataweave 以及问题中提供的预期输出。它有效。
    • 你是对的!我很抱歉。我认为 1.0 做了一些我忘记的数组/对象强制转换。
    • 当我们公司进行转换时,我对 dw 2.0 感到非常兴奋。这是许多问题不包括的一件事。谢谢!
    • 与 Stack Overflow 完全不相关...但如果您关注在线 Mule Meetup 组:meetups.mulesoft.com/online-group,我将在 11 月初发表关于 DW 2.0 的演讲。似乎您知道自己在做什么,您公司的其他人可能会从中受益!
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多