在地图迭代中获取父索引
Getting parent index in map iteration
我的任务是'flatten'一个3级结构变成2级结构。
我正在迭代 XML 中的 3 级结构,并将 'Level3' 字段映射到 'Level2',这工作得很好,但我还需要 [= 的索引22=] 在 'Level3' 映射之一中。
所以我的问题是"getting the Level2.index() while iterating Level3"。
希望你能帮忙:-)
XML structure (IN):
-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<ns:Level1 xmlns:ns="urn:aaaa:bbbb:cccc">
<Level2>
<Level3>
</Level3>
<Level3>
</Level3>
</Level2>
<Level2>
<Level3>
</Level3>
<Level3>
</Level3>
</Level2>
</ns:Level1>
XML structure (OUT):
-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<ns:Level1 xmlns:ns="urn:aaaa:bbbb:cccc">
<Level2>
</Level2>
<Level2>
</Level2>
<Level2>
</Level2>
<Level2>
</Level2>
</ns:Level1>
Dataweave 2.0 Code:
-----------------------
(payload.ns0#Level1.*Level2.*Level3 map ( level3 , indexOfLevel3 ) -> {
Level3Index: payload.ns0#Level1.*Level2.index()?? "",
})
最简单的方法是使用对象扩展功能嵌套到地图并将它们展平。 Dynamic Elements Doc
%dw 2.0
output application/xml
---
Level1: {
( //Flatten all Level2
payload.Level1.*Level2 map ((item, level2Index) ->
{
(//Flatten all the level 3 under level2
item.*Level3 map ((item, level3Index) -> {
Level3: level2Index
})
)
}
)
)
}
我的任务是'flatten'一个3级结构变成2级结构。
我正在迭代 XML 中的 3 级结构,并将 'Level3' 字段映射到 'Level2',这工作得很好,但我还需要 [= 的索引22=] 在 'Level3' 映射之一中。
所以我的问题是"getting the Level2.index() while iterating Level3"。
希望你能帮忙:-)
XML structure (IN):
-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<ns:Level1 xmlns:ns="urn:aaaa:bbbb:cccc">
<Level2>
<Level3>
</Level3>
<Level3>
</Level3>
</Level2>
<Level2>
<Level3>
</Level3>
<Level3>
</Level3>
</Level2>
</ns:Level1>
XML structure (OUT):
-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<ns:Level1 xmlns:ns="urn:aaaa:bbbb:cccc">
<Level2>
</Level2>
<Level2>
</Level2>
<Level2>
</Level2>
<Level2>
</Level2>
</ns:Level1>
Dataweave 2.0 Code:
-----------------------
(payload.ns0#Level1.*Level2.*Level3 map ( level3 , indexOfLevel3 ) -> {
Level3Index: payload.ns0#Level1.*Level2.index()?? "",
})
最简单的方法是使用对象扩展功能嵌套到地图并将它们展平。 Dynamic Elements Doc
%dw 2.0
output application/xml
---
Level1: {
( //Flatten all Level2
payload.Level1.*Level2 map ((item, level2Index) ->
{
(//Flatten all the level 3 under level2
item.*Level3 map ((item, level3Index) -> {
Level3: level2Index
})
)
}
)
)
}