将输入XML的下一个节点映射到XML模式的上一个节点

问题描述 投票:0回答:1

我有一个源和目标架构,如下所示

源架构:

<Root>
    <STDS>
        <COD>
        <NAM>
        <AGE>
    </STDS>
</Root>

目标架构::

<Root>
    <Students>
        <Code100>
            <Name>
            <Age>
            <Code50>
                <Name>
                <Age>
            </Code50>
        </Code100>
    </Students>
</Root>

在源输入中,STDS是无界的。节点COD可以具有三个值100,200和50.因此,在当前STDS节点之前,应将具有COD值= 50的任何STDS节点添加到具有COD值= 100的STDS。

我有一个输入。

<Root>
    <STDS>
        <COD>200</COD>
        <NAM>ABC</NAM>
        <AGE>20</AGE>
    </STDS>
    <STDS>
        <COD>100</COD>
        <NAM>XYZ</NAM>
        <AGE>21</AGE>
    </STDS>
    <STDS>
        <COD>50</COD>
        <NAM>JJJ</NAM>
        <AGE>22</AGE>
    </STDS>
    <STDS>
        <COD>200</COD>
        <NAM>JKL</NAM>
        <AGE>23</AGE>
    </STDS>
    <STDS>
        <COD>100</COD>
        <NAM>MMM</NAM>
        <AGE>24</AGE>
    </STDS>
        <STDS>
        <COD>50</COD>
        <NAM>NNN</NAM>
        <AGE>25</AGE>
    </STDS>
    </STDS>
        <STDS>
        <COD>50</COD>
        <NAM>LLL</NAM>
        <AGE>26</AGE>
    </STDS>
</Root>

我需要一个像下面这样的输出


<Root>
    <Students>
        <Code200>
            <Name>ABC</Name>
            <Age>20</Age>
        </Code200>
        <Code100>
            <Name>XYZ</Name>
            <Age>21</Age>
            <Code50>
                <Name>JJJ</Name>
                <Age>22</Age>
            </Code50>
        </Code100>
            <Name>XYZ</Name>
            <Age>21</Age>
        </Code100>
        <Code200>
            <Name>JKL</Name>
            <Age>23</Age>
        </Code200>
        </Code100>
            <Name>MMM</Name>
            <Age>24</Age>
            <Code50>
                <Name>NNN</Name>
                <Age>24</Age>
            </Code50>
            <Code50>
                <Name>LLL</Name>
                <Age>25</Age>
            </Code50>
        </Code100>
    </Students>
</Root>

我想在BizTalk映射器中实现这一点,而不使用自定义XSLT。

biztalk
1个回答
0
投票

你需要做的就是

<COD>链接到<Code50><Code100>等等。通过测试50,100等的Equal Functoid。

根据Schemas的组成,你可能还需要通过循环Functoids来<STDS><CodeXXX>

就像其他问题一样,你也应该切换回Functoids,这只能用Functoids完成,你只需要尝试一些组合。

© www.soinside.com 2019 - 2024. All rights reserved.