如何在Biztalk Mapping中获取重复节点的数量?

时间:2016-05-05 05:39:08

标签: biztalk biztalk-mapper

我有一个XML架构,其中有一个重复的内部节点。内部节点计数有可能为0.如果内部节点值未在XML文件中传递,则它会抛出映射异常。我需要内部节点的计数并仅在计数大于0时映射它。如何在Biztalk Mapper中完成?

以下是示例XML文件:

  <ns0:OrderDetails xmlns:ns0="http://OrderDetails.Input">
  <OrderNo>10</OrderNo>
  <OrderName>OrderName_0</OrderName>
  <Description>Description_0</Description>
  <TotalAmount>10</TotalAmount>
  <OrderItemDetails><!-- Repeating Node -->
    <ItemID>ItemID_0</ItemID>
    <ItemName>ItemName_0</ItemName>
    <ItemDescription>ItemDescription_0</ItemDescription>
    <Quantity>10</Quantity>
    <UnitPrice>10</UnitPrice>
    <TotalItemPrice>10</TotalItemPrice>
  </OrderItemDetails>
  <OrderItemDetails>
    <ItemID>ItemID_0</ItemID>
    <ItemName>ItemName_0</ItemName>
    <ItemDescription>ItemDescription_0</ItemDescription>
    <Quantity>10</Quantity>
    <UnitPrice>10</UnitPrice>
    <TotalItemPrice>10</TotalItemPrice>
  </OrderItemDetails>
  <OrderItemDetails>
    <ItemID>ItemID_0</ItemID>
    <ItemName>ItemName_0</ItemName>
    <ItemDescription>ItemDescription_0</ItemDescription>
    <Quantity>10</Quantity>
    <UnitPrice>10</UnitPrice>
    <TotalItemPrice>10</TotalItemPrice>
  </OrderItemDetails>
</ns0:OrderDetails>

1 个答案:

答案 0 :(得分:0)

要计算重复节点,请使用Advanced Functoids下的Record Count Functoid。

以下地图适用于您的示例和没有OrderItemDetails的消息。

注意:我已将OrderItemDetails的最小发生时间设置为0

enter image description here

没有OrderItemDetails的消息

<ns0:OrderDetails xmlns:ns0="http://OrderDetails.Input">
    <OrderNo>10</OrderNo>
    <OrderName>OrderName_0</OrderName>
    <Description>Description_0</Description>
    <TotalAmount>10</TotalAmount>
</ns0:OrderDetails>

输出:

<ns0:OrderDetails xmlns:ns0="http://OrderDetails.Input">
    <OrderNo>10</OrderNo>
    <OrderName>OrderName_0</OrderName>
    <Description>Description_0</Description>
    <TotalAmount>10</TotalAmount>
    <ns0:Count>0</ns0:Count>
</ns0:OrderDetails>