我在输入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>
这是完全错误的。有人可以帮我吗。
查看文档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来删除多余的#,例如字符串大小,String Left和减法functoid,或者使用脚本fuctoid。