问题描述
我有以下问题。在 BizTalk 核心 (XML) 中,我有一个可以复制几次的标签。它的基数是 n,比方说 - 理论上 0 ≤ n ≤ 99。我们称之为 Note[n]。
在传出文件(它是扁平的)中,我有五个(正好五个)适当的字段。我们称它们为 FTX1..5。所以我需要做的是将 Note[1]
(如果存在)映射到 FTX1,Note[2]
(如果存在)到 FTX2,...,Note[5]
(如果存在)到FTX5.
是否可以仅使用 Functoids 来做到这一点?我尝试使用循环functoid,但我不明白如何提取每次迭代。另一方面,我不明白我是否可以使用表格循环和表格提取器,因为实际上我没有表格。
所以我需要一些你可以在图片中看到的东西。实际上任务更复杂,但让我们从这里开始。
有谁知道这是否只能通过 Functoids 来解决?
我希望得到任何建议..
解决方法
您需要 Iteration functoid 和 Equal functoid。
将注释链接到每个自由文本节点以及迭代 functoid。将其链接到一系列相等的 functoid,其值范围为 2 到 5,并将它们链接到 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>
请注意,它在没有 Looping Functoid 的情况下也能工作,但会显示警告
目标节点“FreeText2”有多个输入。对于具有多个输入的目标节点,其祖先之一应连接到循环 functoid。
您可以通过添加循环 Functoid 来消除该警告