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

问题描述

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

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

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

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

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

我希望得到任何建议..

Picture of what I need to do

解决方法

您需要 Iteration functoid 和 Equal functoid。

将注释链接到每个自由文本节点以及迭代 functoid。将其链接到一系列相等的 functoid,其值范围为 2 到 5,并将它们链接到 FreeText 节点。

enter image description here

输入文件

<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 来消除该警告

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...