在WSO2 Integration Studio中将Double转换为Integer的方法
在WSO2 Integration Studio中将XPath算术结果转为Integer并保存到属性
你可以通过以下两种方式实现将double类型的运算结果转为Integer并保存到属性:
方法一:直接在XPath表达式中转换
利用XPath的int()函数直接对运算结果进行强制类型转换,会截断小数部分取整。如果需要四舍五入,可配合round()函数使用。
截断取整示例:
<property name="RESULT_QTY" expression="int(($body/*[local-name()='Shipment']/*[local-name()='qty1'])-($body/*[local-name()='Shipment']/*[local-name()='qty2']))"/>
四舍五入取整示例:
<property name="RESULT_QTY" expression="int(round(($body/*[local-name()='Shipment']/*[local-name()='qty1'])-($body/*[local-name()='Shipment']/*[local-name()='qty2'])))"/>
方法二:使用Script Mediator处理复杂转换逻辑
如果需要自定义取整规则(比如向上/向下取整),可以用Script Mediator结合脚本语言实现:
JavaScript示例(支持自定义取整):
<script language="js"><![CDATA[ // 从payload中获取double类型的qty1和qty2 var qty1 = parseFloat(mc.getPayloadXML().*::Shipment.*::qty1); var qty2 = parseFloat(mc.getPayloadXML().*::Shipment.*::qty2); // 计算差值 var diff = qty1 - qty2; // 选择取整方式:parseInt截断、Math.round四舍五入、Math.floor向下取整、Math.ceil向上取整 var intResult = parseInt(diff); // 将结果设置到属性中 mc.setProperty("RESULT_QTY", intResult); ]]></script>
内容的提问来源于stack exchange,提问作者Ruby
相关产品推荐
相关产品推荐

