【发布时间】:2020-10-20 23:33:39
【问题描述】:
我正在尝试映射以下具有两组属性的源结构的一部分 - 一组是平面的,一组是循环的:
源文档
<root>
<flat>
<prop1>foo</prop1>
<prop2>bar</prop2>
...
</flat>
<loop>
<prop>
<qual>propA</qual>
<data>baz</data>
<more>blah</more>
</prop>
<prop>
<qual>propB</qual>
<data>qux</data>
<more>bhal</more>
</prop>
...
</loop>
</root>
具体来说,扁平部分是X12 850 EDI文档的PO1段,循环属性是后面的REF段。
这些应该映射到键值对的循环目标结构,如下所示:
目的地文件
<root>
<props>
<prop>
<name>prop1</name>
<value>foo</value>
</prop>
<prop>
<name>propA</name>
<value>baz</value>
</prop>
</props>
</root>
我只想映射一些值,具体取决于属性名称。
我的尝试
我已使用表格循环 functoid 和两个表格提取器 functoid 成功地将平面部分映射到目标:
我还使用循环 functoid 和一些相等性检查成功地将循环部分映射到目标,以仅选择某些 qual 值:
当我尝试同时包含这两个映射时,映射成功,但不会生成组合输出。
问题
如何将源文档的两个部分映射到目标文档中的同一个循环部分?
更新 1
原来我把问题简单化了;扁平属性组实际上包含一个节点中的属性名称和另一个节点中的值。它们实际上是这样的:
<flat>
<name1>prop1</name1>
<value1>foo</value1>
<name2>prop2</name2>
<value2>bar</value2>
...
</flat>
如果您使用值映射(展平)functoid 从正确的位置获取属性名称,@Dijkgraaf 的答案的概念仍然适用于此更改。
【问题讨论】:
-
你能分享一张你目前拥有的地图示例吗?
-
@Dijkgraaf 我已经用相关地图部分的屏幕截图更新了问题。这些都是从目前不起作用的组合地图中获取的,但是如果我删除其中一个,其他的工作。 LMK,如果我可以提供任何其他详细信息。