如何将多个重复节点串联成一个节点 - BizTalk

How to Concatenate multiple repetitive nodes into a single node - BizTalk

我在输入中有这样的东西XML

  <OrderText>
    <text_type>0012</text_type>
    <text_content>Text1</text_content>
  </OrderText>
  <OrderText>
    <text_type>ZT03</text_type>
    <text_content>Text2</text_content>
  </OrderText>

以上数据拼接后需要映射为下面的模式

<Order>
    <Note>0012:Text1#ZT03:Text2</Note>
</Order>

有人可以帮忙吗?

您可以在映射中使用 Value-Mapping Flattening functoid,然后将每个函数的结果提供给 Concatenate functoid 以生成结果字符串。该映射可以在端口上或编排中执行。

我假设您的输入实际上有一个 Root 节点,否则它是无效的 XML。

<Root>
 <OrderText>
    <text_type>0012</text_type>
    <text_content>Text1</text_content>
  </OrderText>
  <OrderText>
    <text_type>ZT03</text_type>
    <text_content>Text2</text_content>
  </OrderText>
</Root>

那么你只需要一张这样的地图

使用字符串连接 functoid

Input[0] = text_type
Input[1] = :
Input[2] = text_content
Input[3] = #

进入累积串联

这会给你一个输出

<Order>
  <Note>0012:Text1#ZT03:Text2#</Note> 
</Order>

注意:末尾有一个额外的 #,但如果需要,您可以使用更多的 functoid 来 trim 关闭它。