隨着JS中保,你可以這樣做:
<payloadFactory media-type="xml">
<format>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</format>
<args/>
</payloadFactory>
<log level="full"/>
<script language="js"><![CDATA[
var msg = mc.getPayloadXML();
mc.setPayloadXML(
<book category="cooking">
<title lang="en">{msg..*::title}</title>
<author>{msg..*::author}</author>
<year>{msg..*::year}</year>
</book>
);
]]>
</script>
<log level="full"/>
以上payloadFactory調解僅僅是定義你在你的問題中提出的XML。
此外,還可以使用payloadFactory中介:
<payloadFactory media-type="xml">
<format>
<book category="cooking">
<title lang="en">$1</title>
<author>$2</author>
<year>$3</year>
</book>
</format>
<args>
<arg evaluator="xml" expression="//book/title/text()"/>
<arg evaluator="xml" expression="//book/author/text()"/>
<arg evaluator="xml" expression="//book/year/text()"/>
</args>
</payloadFactory>
最後,XSLT方法,你可以在突觸配置定義本地入境文件:
<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="xsltToTransform" xmlns="http://ws.apache.org/ns/synapse">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="price"/>
</xsl:stylesheet>
</localEntry>
然後,在調解序列中,只需調用已定義的本地條目即可。
<xslt key="xsltToTransform"/>
親愛的Praveen,我希望價格應該是硬編碼的,客戶端不應該知道「價格」的價值,客戶端將不得不將所有參數傳遞給SOAP消息,但很少有參數會從客戶端填充,其他會自動填充或硬編碼客戶端沒有看到這一點。在ESB之前,我曾經爲這種需求編寫包裝服務,但我已經切換到ESB,我正在找到解決方案,但我未能實現這一點。謝謝 –