我需要用1234替换{orgId},用2345替换{orgSyncKey},用12/01/2004替换{startDate},用15/02/2005替换{endDate}。
在wso2esb中有任何替换类型的函数吗?
答案 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')"/>