我有一个BizTalk映射的问题,我需要将数据从源架构复制到目标架构,但是有条件。
我想复制具有相同名称的3个节点中的值,但一个值除外。让我解释一下。
举个例子:
<testxml>
<node>abc</node>
<node>def</node>
<node>ghi</node>
<node>jkl</node>
</testxml>
使用字符串连接,我设法将目标模式的数据获取到以下内容:
<testxml>
<node>abcdefghijkl</node>
</testxml>
但是我希望输出类似于以下内容:
<testxml>
<node>abcdefjkl</node>
</testxml>
因此我从输出中提取值'ghi'。
有什么方法可以实现这个目标吗?
注意:我不能使用字符串提取,因为我需要提取的文本位于字符串的中间
答案 0 :(得分:2)
这是“最干净”的解决方案(小心脚本functoid是危险的,因为它会在某些情况下导致内存泄漏,例如大文件,只有在极端情况下才能使用它,更多详情可在此处https://support.microsoft.com/en-us/kb/918643),现在对于你的问题,你可以通过组合不等于运算符(你基本上告诉你的元素不应该等于JKL或其他)来做到这一点然后添加一个累积的连接functoid你将在你的输出中所有的字符串连接除了一个不应该
您可以在附件中找到我制作的一些样本 Sample Demo
答案 1 :(得分:1)
使用脚本functoid和一些custom inline XSLT:
可以很容易地实现这一点<xsl:variable name="outputval" select="concat(//node[1],//node[2],//node[4])" />
<xsl:element name="node">
<xsl:value-of select="$outputval" />
</xsl:element>
答案 2 :(得分:0)