我从ESB中的端点获取XML结果。我必须存储此结果XML并将其发送到API以验证内容。 validate API返回几个无效的项,我必须从XML中删除这些无效项,然后再将XML发送到另一个端点。
我的方法: 现在我正在调用返回XML记录的端点API。我将它作为REQUEST_PAYLOAD存储为Enrich Mediator。并将其发送到另一个端点进行验证。我已经将来自验证端点的结果再次存储在属性中。然后,当我通过$ ctx访问Request有效负载时:REQUEST_PAYLOAD我收到了XML文件。但我无法将此XML传递给XSLT,我必须根据第二个端点的结果删除一些项目。
我应该能够将此XML以及验证API的结果传递给XSLT,以便可以从XML中删除很少的项并发送到另一个API。
Example:
1st XMl
'<Data>
<User Name="XYZ">
<DETAILS>
<COURSE>IS</COURSE>
<YEAR>2016</YEAR>
<SUBJECT>COMPUTER SCIENCE<SUBJECT>
</DETAILS>
</User>
<User Name="ABC">
<DETAILS>
<COURSE>IS</COURSE>
<YEAR>2015</YEAR>
<SUBJECT>INFO SCIENCE<SUBJECT>
</DETAILS>
</User>
</Data>'
2nd XML :
'<message> ABC user is invalid </message>
<value>ABC</value>'
Result XML :
Remove ABC from the 1st XML
'<Data>
<User Name="XYZ">
<DETAILS>
<COURSE>IS</COURSE>
<YEAR>2016</YEAR>
<SUBJECT>COMPUTER SCIENCE<SUBJECT>
</DETAILS>
</User>
</Data> '
答案 0 :(得分:0)
您有2个属性类型=&#34; OM&#34; :REQUEST_PAYLOAD并说明验证API的结果保存在VALIDATION_PAYLOAD
使用enrich mediator设置REQUEST_PAYLOAD有当前消息。例如,如果您的属性包含soap Body:
<enrich>
<source type="property" property="REQUEST_PAYLOAD"/>
<target type="body"/>
</enrich>
使用rich mediator在当前消息中附加VALIDATION_PAYLOAD的内容,例如:
<enrich>
<source clone="true" xpath="get-property('VALIDATION_PAYLOAD')"/>
<target type="body" action="child"/>
</enrich>
使用日志级别=&#34;完整&#34;仔细查看你得到的内容,然后使用xslt mediator
答案 1 :(得分:0)
我可以建议如下:从验证端点收到响应后,您应该将其保存为另一个属性validateResponse。接下来,您应该使用Enrich或PayloadFactory将您的$ body替换为REQUEST_PAYLOAD。然后你可以调用XSLT中介,它将用你的响应替换你的$ body。您现在可以根据需要使用三个有效负载。