【问题标题】:Concatenating values from the repeating nodes under repeating nodes in BizTalk Maps连接 BizTalk 映射中重复节点下重复节点的值
【发布时间】:2020-03-28 07:18:40
【问题描述】:

我在输入 XML 中有类似的东西

<Root>
<OrderText>
    <item>item1</item>
    <item>item2</item>
  </OrderText>
  <OrderText>
    <item>item3</item>
    <item>item4</item>
    <item>item5</item>
  </OrderText>
</Root>

从这个输入,期望的输出是

<Root>
 <OrderItems>
  <Items>item1#item2</Items>  
 </OrderItems>
  <OrderItems>
  <Items>item3#item4#item5</Items>  
 </OrderItems>
</Root>

我正在尝试在这里找到解决方案,并遵循了我很久以前提出的问题(链接How to Concatenate multiple repetitive nodes into a single node - BizTalk) 但通过这种方法,我得到如下结果

<Root>
 <OrderItems>
  <Items>item1#item2#item3#item4#item5</Items>  
 </OrderItems>
  <OrderItems>
  <Items>item1#item2#item3#item4#item5</Items>  
 </OrderItems>
</Root>

这是完全错误的。谁能帮帮我。

【问题讨论】:

    标签: concatenation biztalk biztalk-mapper


    【解决方案1】:

    查看文档Cumulative Concatenate Functoid

    这给了你第一个线索

    参数2:一个可选的数值,表示应该进行累加的范围。默认值为零(0),表示累积范围是整个输入实例消息。

    尝试添加第二个参数并将其设置为 1。这将导致以下输出,更接近您想要的。

    <Root>
        <OrderItems>
            <Items>item1#item2#</Items>
            <Items>item3#item4#item5#</Items>
        </OrderItems>
    </Root>
    

    第二个线索可以通过转到错误列表,显示消息并单击“双击此处显示/隐藏编译器链接”来找到。这将导致地图表面上出现橙色线,显示地图认为它应该如何循环。请参阅上面的屏幕截图,该屏幕截图也显示了这一点。注意它是如何只在根上循环的?

    因此,第二个修复方法是从 OrderText 到 OrderItems 画一条线,并在出现提示时选择 Direct Link,这表示您希望它也循环到那里。

    这将使您的输出接近您想要的输出

    <Root>
        <OrderItems>
            <Items>item1#item2#</Items>
        </OrderItems>
        <OrderItems>
            <Items>item3#item4#item5#</Items>
        </OrderItems>
    </Root>
    

    可以使用许多 fuctoid(例如字符串 Size、String Left 和减法 functoid)或使用 Scripting Fuctoid 来删除末尾多余的 #。

    【讨论】:

    • 你是天使。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    相关资源
    最近更新 更多