2014-03-06 82 views
0

我有一個要求,我在mule流中針對xml有效載荷運行xPath評估程序。此xPath評估程序可以返回單個或多個值。我需要將這些值存儲在流變量中,並在稍後的流程中使用。有人可以幫我實施這個改變嗎?騾流中的XPATH返回多個值

感謝您對此的幫助。

謝謝

回答

1

要從XML文檔中提取值,請使用XPath提取器。

<mulexml:xpath-extractor-transformer expression="/a:my/b:xpath/text()"/> 

您也可以useMule Expression Language來創建動態的XPath表達式:

<expression-transformer mimeType="text/xml" evaluator="xpath" expression="//school/day[@date= #[function:datestamp:yyyy-MM-dd] ]/name 
"/> 

然而,這可以得到複雜的表情有些凌亂,所以我創造了自己的dynamic XPath transformer

<dx:dxpath expression="/b:team[name = $teamName]/b:player[b:name = $playerName]/b:goals/text()"> 
    <dx:variable key="playerName" value="#[header:invocation:playerName]"/> 
    <dx:variable key="teamName" value="#[header:invocation:teamName]"/> 
    <!-- unlimited number of variables --> 
</dx:dxpath> 

這在眼睛上更容易一些。

然後用ericher包裝你的流:

<enricher target="#[variable:myData]"> 
    <processor-chain> 
     <!-- your flow here --> 
    </processor-chain> 
</enricher> 
+0

感謝托馬斯應對這一點。你知道我能夠使用XPATH在mule流中從XML中提取值。但是,我的XPATH表達式返回值的數組。我無法在XPATH表達式的末尾使用「.text」函數獲取它的值。我使用下面的表達式:。我的確切要求是將這個值的數組傳遞給XSLT並在那裏使用它。 – user2324686