我有一个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>
答案 0 :(得分:0)
要计算重复节点,请使用Advanced Functoids下的Record Count Functoid。
以下地图适用于您的示例和没有OrderItemDetails的消息。
注意:我已将OrderItemDetails的最小发生时间设置为0
没有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>