【问题标题】:how can I write the map inside map in dataweave in mule如何在 mule 中的 dataweave 中的 map 中编写地图
【发布时间】:2016-05-05 23:46:51
【问题描述】:

如何在 mule 中的 dataweave 中的 map 中写入地图。 从 XML 转换为 CSV 时的示例。

【问题讨论】:

    标签: mule mule-component mule-el dataweave


    【解决方案1】:

    您能否添加任何示例输入以便我们提出更好的建议?

    一般来说,只要您要迭代的对象是集合,您就可以嵌套map。但请记住,对于 CSV,您不能在输出中包含嵌套属性。

    【讨论】:

    • PF 上面的 xml 用例。在 D 标签内部,我们有不同的 ID。每个 ID 对每个 ID 都有以下所有名称(在 E 标签中可用)。我们必须在 dataweave 中迭代。注意:C 标签内 D 和 E 处于同一级别。
    • 怎么来的 123 John 123 Suresh 123 Siva 433 John 433 Suresh 433 siva
    • 所以您的意思是 payload.Root.A.*C 应该映射并输出带有 id-name 对的单行,并且每个名称都应该与每个 id 绑定?您确定这是您要映射的确切有效负载示例吗?您可以在 C 上映射并将其与 D 上的映射嵌套。
    • 到目前为止,我们正在映射 E,它嵌套在 D 上的映射中。这会生成正确的匹配,但会生成多个标题。此外,所有记录都在同一行中,而不是一个在另一个之下
    【解决方案2】:

    使用基于 D 的拆分器并将 ID 存储在流变量中并在拆分器中使用 setpayload 并将 ID 与名称映射并使用收集器收集所有结果。请参阅下面的示例我没有进行数据编织转换,但我已经给出你是一个高层次的想法

    <flow name="sampleFlow">
            <http:listener config-ref="" path="/" doc:name="HTTP"/>
            <set-variable variableName="originalPayload" value="#[payload]" doc:name="Variable"/>
            <splitter expression="#[xpath3('/Root/A/C/D')]" doc:name="Splitter"/>
            <set-variable variableName="storeId" value="#[xpath3('/id')]" doc:name="Variable"/>
            <set-payload value="#[flowVars.originalPayload]" doc:name="Set Payload"/>
            <dw:transform-message doc:name="Transform Message">
                <dw:set-payload><![CDATA[%dw 1.0
    %output application/java
    ---
    {
    }]]></dw:set-payload>
            </dw:transform-message>
            <collection-aggregator failOnTimeout="true" doc:name="Collection Aggregator"/>
        </flow>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2018-07-11
      • 2017-09-15
      • 2020-09-13
      • 1970-01-01
      相关资源
      最近更新 更多