BizTalk 映射:如何从循环中提取单行

BizTalk mapping: how to extract single row from looping

我有以下问题。在 BizTalk 核心 (XML) 中,我有一个可能会被复制几次的标记。它的基数是 n,比方说 - 理论上 0 ≤ n ≤ 99。我们称它为 Note[n].

在传出文件(它是扁平的)中,我有五个(正好五个)适当的字段。我们称它们为 FTX1..5。所以我需要做的是将Note[1](如果存在)映射到FTX1,Note[2](如果存在)映射到FTX2,...,Note[5](如果存在)到FTX5.

是否可以只使用 Functoid 来做到这一点?我尝试使用 Looping functoid,但我不明白如何提取每次迭代。另一方面,我不明白我是否可以使用 Table 循环和 Table 提取器,因为实际上我没有 table.

所以我需要一些你可以在图片中看到的东西。其实任务更复杂,但让我们从这里开始吧。

有谁知道这是否只能通过 Functoids 解决?

如有任何建议,我将不胜感激..

您需要 Iteration functoid 和 Equal functoid。

Link 请注意每个 FreeText 节点以及 Iteration functoid。 Link 一系列相等的 functoids,其值范围从 2 到 5,link FreeText 节点也是如此。

输入文件

<ns0:Root xmlns:ns0="http://Scratch.SO65382125in">
  <Note>Note_0</Note>
  <Note>Note_1</Note>
  <Note>Note_2</Note>
</ns0:Root>

输出(格式化)

<ns0:Root xmlns:ns0="http://Scratch.SO65382125out">
    <FreeText1>Note_0</FreeText1>
    <FreeText2>Note_1</FreeText2>
    <FreeText3>Note_2</FreeText3>
</ns0:Root>

请注意,它可以在没有循环 Functoid 的情况下工作,但会显示警告

The destination node "FreeText2" has multiple inputs. For a destination node to have multiple inputs, one of its ancestors should be connected to a looping functoid.

您可以通过添加循环 Functoid 来消除该警告