XPath中是否存在某种split()
函数?
说我有这个XML:
<root>
<path>C:\folder\filename</path>
</root>
我想要检索filename
,我该怎么做?我知道我可以得到这样的节点值:
//path/text()
我怎样才能获得文件名? (我知道有一个concat()
函数,所以可能有一个split()
函数?)
答案 0 :(得分:8)
如果您有支持xpath-2.0的API,则可以通过两种方式解决此问题:
替换技术
尝试使用:
fn:replace(string,pattern,replace)
e.g。
fn:replace(//path/text(),".*/","")
标记化技术
你可以从tokenize获得一些里程:
fn:tokenize(string,pattern)
e.g。 (感谢马丁)
tokenize(/root/path, '\\')[last()]
答案 1 :(得分:1)
虽然我会使用:
tokenize(/*/*, '\\')[last()]
还有许多其他方法可以获得所需的字符串:
codepoints-to-string
(reverse
(string-to-codepoints
(substring-before
(codepoints-to-string
(reverse
(string-to-codepoints(/*/*)
)
),
'\'
)
)
)
)
或强>:
substring(/*/*,
index-of(string-to-codepoints(/*/*),
string-to-codepoints('\')
)
[last()]
+ 1
)