wso2esb中有替换功能吗?

时间:2016-10-20 07:37:11

标签: string replace wso2esb

我有类似的字符串 的的htt://api.orgsync.com/orgs/ {ORGID} /事件键= {orgSyncKey}&安培; STARTDATE = {的startDate}&安培;结束日期= {endDate}结束

我需要用1234替换{orgId},用2345替换{orgSyncKey},用12/01/2004替换{startDate},用15/02/2005替换{endDate}。

在wso2esb中有任何替换类型的函数吗?

5 个答案:

答案 0 :(得分:1)

replace是XPath 2.0附带的一个函数。要启用XPath 2.0功能,请取消注释位于$ ESB_HOME / repository / conf目录的synapse.properties文件中的以下条目。

synapse.xpath.dom.failover.enabled=true

然后你必须指定中介,如下,

<property
expression="fn:replace('your_original_string', 'pattern_to_replace', 'your_new_string')"
name="NEWSTRING" scope="default" type="STRING"
xmlns:fn="http://www.w3.org/2005/xpath-functions" />

答案 1 :(得分:0)

请参阅https://docs.wso2.com/display/ESB480/HTTP+Endpoint#HTTPEndpoint-XMLConfigurationXMLConfiguration

中提到的示例

您可以使用要在网址中替换的键和值创建属性中介。然后你可以调用send mediator,它有一个带有这些占位符的端点url。

答案 2 :(得分:0)

您可以使用XPath 2.0中提供的xpath替换功能。首先,您需要在esb上启用xpath 2.0。为此设置以下属性

synapse.xpath.dom.failover.enabled=true

[ESB_HOME]/repository/conf/synapse.properties档。

假设原始字符串设置为如下属性。

<property name="OriginalString"
value="htt://api.orgsync.com/orgs/{orgId}/events?key={orgSyncKey}&startdate={startDate}&enddate={endDate}"
scope="default" type="STRING"/>

您可以使用属性介体替换所需的字符串部分。

<property name="ReplacedString" expression="fn:replace(fn:replace(fn:replace((fn:replace($ctx:OriginalString , '\{orgId\}', '1234')), '\{orgSyncKey\}', '2345'), '\{startDate\}' ,'12/01/2004'), '\{endDate\}' , '15/02/2005')" scope="default" type="STRING" xmlns:fn="http://www.w3.org/2005/xpath-functions" />

答案 3 :(得分:0)

如果您不使用XPATH 2.0,则可以使用脚本介体并为字符串替换编写javascript脚本。

答案 4 :(得分:0)

你可以像下面这样,

改成synapse.properties

synapse.xpath.dom.failover.enabled=true

假设我们有一个句子,如I have {Amount} pets。我们需要替换 {Amount}

那么我们可以这样写,

<property name="MESSAGE" value="I have {Amount} pets" scope="default" type="STRING"/>

<property name="AMOUNT_PLACE_HOLDER" value="\{Amount\}" scope="default" type="STRING"/>

<property name="MESSAGE_TEMP"
                      expression="replace($ctx:MESSAGE, $ctx:AMOUNT_PLACE_HOLDER, '10')"/>