2013-07-11 19 views
0

祝使用XPath 我輸入這樣的我們如何才能在Wso2esb使用XPath

<property name="Message" value="assetname:ups,assetcode:452chi,assetid:548935,assetvalue:215" scope="default"/> 

,我需要使用XPath 在同一財產打破我需要這樣的

打破wso2esb字符串斷線
assetname:ups 
assetcode=452chi 
assetid=54895 
assetvalue=215 

爲了這個,我試圖與記號化的功能,但wso2esb顯示錯誤 我的配置文件

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Xpathcheck" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> 
    <target> 
     <inSequence> 
     <property name="max" value="1" scope="default" type="STRING"/> 
     <property name="min" value="1" scope="default" type="STRING"/> 
     <property name="MessageText" expression="fn:concat('Assetid:',get-property('min'),',','Assetname:',get-property('max'))" scope="default" type="STRING"/> 
     <property name="Tokenize" expression="fn:tokenize(get-property('Messagetext'),',')" scope="default" type="STRING"/> 
     <log> 
      <property name="MessageText" expression="get-property('MessageText')"/> 
      <property name="Tokenize" expression="get-property('Tokenize')"/> 
     </log> 
       </inSequence> 
     <outSequence/> 
    </target> 
    <description></description> 
</proxy> 

但是像這樣的情況下引發錯誤u必須爲了這個,我需要這在db表存儲爲一個字段,它看起來像單獨的行 錯誤的任何想法是

ERROR - SynapseXPath Evaluation of the XPath expression fn:tokenize(get-property('Messagetext'),',') resulted in an error 
org.jaxen.UnresolvableException: No Such Function tokenize 

回答

4

tokenize是一個XPath 2.0自帶的函數。要啓用的XPath 2.0功能取消註釋在synapse.properties文件中的以下條目它位於$ ESB_HOME /庫/ conf目錄

synapse.xpath.dom.failover.enabled=true 

,那麼你必須按如下方式指定中介,

<property name="Message" value="a,b,c,d,e" scope="default"/> 
     <property xmlns:fn="http://www.w3.org/2005/xpath-functions" name="Tokenize" expression="fn:tokenize(syn:get-property('Message'),',')" scope="default" type="STRING"/> 
+1

謝謝你的回答。 –

0

我不認爲這是可以通過的XPath完成,XPath將導航XML中的元素。您可以通過使用腳本中介來完成此操作,並編寫一個JS來中斷屬性值。 使用以下方法來從腳本中介

<script language="js"> var test_param = mc.getProperty('Message') 

使用訪問ESB PARAMS下面的腳本中介內檢索PARAMS回ESB

mc.setProperty("param1",var1) 
mc.setProperty("param2",var2) 

使用JavaScript來進行必要的字符串處理

+0

感謝名單以便快速重播。可以將該值附加到一個屬性中,如數組我們可以在wso2esb中創建數組 –

+0

您可以通過腳本介體創建此類數組,然後可以由ESB訪問此數組。 – Nadeesha

+0

thanx again..k我會嘗試基本上我從甲骨文soa所以我不知道更多關於javascript –

相關問題