DataWeave 2-使用数组项标签将Java ArrayList转换为XML

问题描述

我在Mule 4.3中有一个Java有效负载,其中包含ArrayList:

agentList = {ArrayList}
    0 = {SomeClass}
        id = "0"
        name = "Agent0"
    1 = {SomeClass}
        id = "1"
        name = "Agent1"

我想将此转换为XML:

<agentList>
    <agent>
         <id>0</id>
         <name>Agent0</name>
    </agent>
    <agent>
         <id>1</id>
         <name>Agent1</name>
    </agent>
</agentList>

如果我执行Dataweave转换output application/xml --- result: payload,则会得到以下XML:

<result>
    <agentList>
         <id>0</id>
         <name>Agent0</name>
    </agentList>
    <agentList>
         <id>1</id>
         <name>Agent1</name>
    </agentList>
</result>

如何转换ArrayList,以使每个项目都被agent标记包围,而整个列表为agentList

解决方法

%dw 2.0
output application/xml
---
result: {
    agentList: payload.*agentList map (value) -> { agent: value }
}