我有这些节点:
<JConfig diffgr:id="JobSubmissionConfig1" msdata:rowOrder="0">
<JConfigID>12314</JConfigID>
<JConfigName>Custom_Assets15</JConfigName>
<DataOwnerID>21873497</DataOwnerID>
<RunAsUserID>21873497</RunAsUserID>
<StatusChgEmailAddresses>admin@someemail.com</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 :(得分:1)
您可以使用substring-after():
substring-after(//*[local-name()='InputFolder']/text(), 'Input\')
或者,您可以将第三个参数删除到substring(),
substring(//*[local-name()='InputFolder']/text(), 7)
并且它默认为字符串的结尾。
请注意,您可以将XPath简化为//InputFolder
,因为
InputFolder
将产生您想要的值。