mule - 在地图迭代中获取父索引
问题描述
我的任务是将 3 级结构“扁平化”为 2 级结构。
我正在迭代 XML 中的 3 级结构,并将“Level3”字段映射到“Level2”,这工作得很好,但我还需要“Level3”映射之一中的“Level2”索引。
所以我的问题是“在迭代 Level3 时获取 Level2.index()”。
希望你能帮忙:-)
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()?? "",
})
解决方案
最简单的方法是嵌套到地图并使用对象扩展功能将它们展平。动态元素文档
%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
})
)
}
)
)
}
推荐阅读
- azure-devops - 在 Azure DevOps 的项目中仅将工作项字段添加到一个板
- python - PYQT5:防止图像标签改变窗口大小
- dns - 链接到从电子邮件中删除的域
- xml - OptaPlanner(基准):java.lang.IllegalArgumentException:scoreDirectorFactory 缺少配置/scoreClass 不遵循正确的模式
- javascript - 替换js文件中的数据
- linux-kernel - linux0.11 使用 open 写入 process.log
- javascript - React with TypeScript - 映射在 for 循环中返回的一组 promise
- python - pytube urllib.error.HTTPError:HTTP 错误 404:未找到
- ruby-on-rails - Paperclip 4.2 ruby 2.7.2 警告:URI.escape 已过时
- apache-spark - 如果不兼容,如何运行 Apache Zeppelin 0.9.0 和 Apache Spark 3.1.1?