将数组附加到 xml 对象 脚本输出

问题描述

我有以下输入

{
    "array": [
        {
            "name": "value1"
        },{
            "name": "value2"
        },{
            "name": "value3"
        }
    ]
}

并希望得到以下输出

<a>
    <b />
    <c>value1</c>   
    <c>value2</c>   
    <c>value3</c>    
</a>

我能得到的最接近的是这个

<a>
  <b>
    <c>value1</c>
    <c>value2</c>
    <c>value3</c>
  </b>
</a>

使用这个数据编织

%dw 2.0
output application/xml writeDeclaration=false
---

a: b: (payload.*array map {c: $.name})

感谢您的任何帮助

还有额外的点......如果有人可以帮助使用上面的示例json有效负载生成以下内容

<a>
    <b />
    <c>value1</c>
    <d>e</d>    
    <c>value2</c>
    <d>e</d>        
    <c>value3</c>
    <d>e</d>         
</a>

解决方法

试试这个方法:

脚本

%dw 2.0
output application/xml writeDeclaration=false
---

a : { 
 b: {}
}
 ++ {
  (payload.*array map {c: $.name})
 }
,

通过这种方法,您可以获得第二个预期输出:

脚本

3.6.3

输出



    %dw 2.0
    output xml writeDeclaration=false
    ---

    a : { 
    b:''
    }
    ++ {
    (payload.array map 
    {
      c: $.name,d:'e'
    })
    }