使用MessageConstruction形状中的xpath聚合顺序节点

时间:2013-07-19 15:33:01

标签: xpath biztalk biztalk-2010

我正在使用BizTalk 2010,并且想知道在没有映射的情况下在业务流程中添加顺序元素。

让我们说我的业务流程收到 Message_In

<ns0:Employees xmlns:ns0="http://employee">
    <Employee>
        <FirstName>FirstName_1</FirstName>
        <LastName>LastName_1</LastName>
        <Age>1</Age>
    </Employee>
    <Employee>
        <FirstName>FirstName_2</FirstName>
        <LastName>LastName_2</LastName>
        <Age>2</Age>
    </Employee>
</ns0:Employees>

...和 Message_Default

<ns0:Employees xmlns:ns0="http://employee">
    <Employee>
        <FirstName>FirstName_Default</FirstName>
        <LastName>LastName_Default</LastName>
        <Age>0</Age>
    </Employee>
</ns0:Employees>

我希望将这些消息汇总到单个 Message_Out

<ns0:Employees xmlns:ns0="http://employee">
    <Employee>
        <FirstName>FirstName_1</FirstName>
        <LastName>LastName_1</LastName>
        <Age>1</Age>
    </Employee>
    <Employee>
        <FirstName>FirstName_2</FirstName>
        <LastName>LastName_2</LastName>
        <Age>2</Age>
    </Employee>
    <Employee>
        <FirstName>FirstName_Default</FirstName>
        <LastName>LastName_Default</LastName>
        <Age>0</Age>
    </Employee>
</ns0:Employees>

如果我尝试简单地从Message_Default分配默认员工,则会替换Employees节点内容。是否有可能以某种方式改进此声明以追加Message_Default的员工而​​非替换?

Message_Out = Message_In;
xpath(Message_Out, "/*[local-name()='Employees']") 
    = xpath(Message_Default, "/*[local-name()='Employees']/*[local-name()='Employee']");

P.S。我知道我可以通过多消息映射来实现这一点,但我尝试避免映射,因为我的真实消息的结构复杂。

0 个答案:

没有答案