2015-05-20 33 views
1

選擇不同長度的字符串我有這些節點:如何在XPath的

<JConfig diffgr:id="JobSubmissionConfig1" msdata:rowOrder="0"> 
    <JConfigID>12314</JConfigID> 
    <JConfigName>Custom_Assets15</JConfigName> 
    <DataOwnerID>21873497</DataOwnerID> 
    <RunAsUserID>21873497</RunAsUserID> 
    <StatusChgEmailAddresses>[email protected]</StatusChgEmailAddresses> 
    <InputFolder>Input\JVEND_DATA_ADMIN_12314</InputFolder> 
    <HistoryFolder>Processed\JVEND_DATA_ADMIN_12314</HistoryFolder> 
</JConfig> 

我感興趣的只是在InputFolder節點值"Input\",即"JVEND_DATA_ADMIN_12314"後啓動,但問題是該值將繼續根據我使用的用戶ID更改(字符數)。

我試圖

substring(//*[local-name()='InputFolder']/text(), 7, 20) 

這並與其中一些匹配的字符數的用戶ID的工作,因爲文件夾名稱將取決於用戶ID我用,也可能是一些其他的用戶id來作爲"ABVEND_DATA_ADMIN_124587"

給我一些解決方案,可以讓我捕獲"Input\"後的值,然後在我的下一個請求中使用它。

+0

@ kjhughes這就是我在想,,,你回答之前,我可以更多地認爲,,,很好,很多謝謝 – vishal

回答

1

您可以使用substring-after()

substring-after(//*[local-name()='InputFolder']/text(), 'Input\') 

或者,你可以在第三個參數下降到substring()

substring(//*[local-name()='InputFolder']/text(), 7) 

,它會默認爲字符串的結尾。

注意,你也許可以簡化您的XPath只是//InputFolder因爲

  1. 有不似乎是在玩任何名稱空間和
  2. InputFolder的字符串值,將產生你想要的值。