我有以下肥皂:身体
<soapenv:Body>
<Message>
<Context>
<id>10</id>
<subject>sub10</subject>
<body>body10</body>
</Context>
</Message>
</soapenv:Body>
但是我需要在发送到请求之前在<SendMessageRequest>
标记内插入内容:
<soapenv:Body>
<SendMessageRequest>
<Message>
<Context>
<id>10</id>
<subject>sub10</subject>
<body>body10</body>
</Context>
</Message>
</SendMessageRequest>
</soapenv:Body>
我正在使用Enrich Mediator
,但没有想出如何做到这一点......
这里是我正在尝试的代码:
<enrich>
<source type="body"/>
<target action="child" type="custom" xpath="SendMessageRequest"/>
</enrich>
答案 0 :(得分:3)
您无法直接添加中间元素。那是一个包装你当前内容的那个。相反,您可以将要包装的内容存储在属性中。注意使用$body
xpath变量(由SynapseXPath
类提供),它引用了soap body元素,而不管使用过的soap版本。
<property name="payload" expression="$body/*[1]" type="OM"/>
然后使用PayloadFactory
介体构建新的请求存根:
<payloadFactory>
<format>
<SendMessageRequest xmlns=""/>
</format>
<args/>
</payloadFactory>
随后,您可以将以前的内容丰富到新创建的有效负载中。
<enrich>
<source clone="true" property="payload" type="property"/>
<target action="child" type="custom" xpath="$body/SendMessageRequest"/>
</enrich>