Mule Dataweave XML to JSON基于XML中的属性创建密钥对值

Mule Dataweave XML to JSON基于XML中的属性创建密钥对值,mule,dataweave,Mule,Dataweave,我正在尝试使用dataweave以特定格式创建json xml在某些元素中具有属性,我需要使用它在json文件中创建一个未定义的键 XML 这是我的数据编织的开始。我没有取得更大的进展,因为我能够设置未分组的部分是至关重要的 数据编织 %dw 1.0 %input payload application/xml %output application/json --- { recipe: { "ingredients": { (payload.Recipe.*Ingredients.@Secti

我正在尝试使用dataweave以特定格式创建json

xml在某些元素中具有属性,我需要使用它在json文件中创建一个未定义的键

XML

这是我的数据编织的开始。我没有取得更大的进展,因为我能够设置未分组的部分是至关重要的

数据编织

%dw 1.0
%input payload application/xml
%output application/json
---
{
recipe: {
"ingredients": { (payload.Recipe.*Ingredients.@Section map
'Ungrouped':{
  position : $$+0
    } when $ == null otherwise

'$':{
  position : $$+0
    }
)}
}
}

我希望我已经涵盖了一切。如果我没有,请告诉我,因为这是我在stackoverflow上的第一篇帖子。

如果没有
部分的
成分,那么你可以:

%dw 1.0
%output application/json
%var addPosition = (list) -> list map {
  "position": $$+1,
  "description" : $
}
---
recipe: ingredients: {(
  ("Ungrouped" + payload.Recipe.*Ingredients.@Section) map {
    "$" : {
      "position": $$,
      "list": addPosition(payload.Recipe.*Ingredients[$$].*Ingredient)
    }
  }
)}

所以最困难的部分是把所有没有切面的成分分组,对吗?你能有更多的成分标签没有部分吗?非常好的简单解决方案,我学到了更多关于数据编织的力量。谢谢Shoki
%dw 1.0
%input payload application/xml
%output application/json
---
{
recipe: {
"ingredients": { (payload.Recipe.*Ingredients.@Section map
'Ungrouped':{
  position : $$+0
    } when $ == null otherwise

'$':{
  position : $$+0
    }
)}
}
}
%dw 1.0
%output application/json
%var addPosition = (list) -> list map {
  "position": $$+1,
  "description" : $
}
---
recipe: ingredients: {(
  ("Ungrouped" + payload.Recipe.*Ingredients.@Section) map {
    "$" : {
      "position": $$,
      "list": addPosition(payload.Recipe.*Ingredients[$$].*Ingredient)
    }
  }
)}