我如何优化Xpath表达式?

时间:2017-07-05 12:28:08

标签: xml xpath

我需要将最后5个字符串符号连接到最后4个,然后将它们与' _'分开。 我想出了这个,但它看起来很难看。可以改写得更好吗?我是Xpath的新手,所以也许它可以(但我不这么认为)

concat(substring(//element1/element2/text(),1,5),"_",substring(//element1/element2/text(),string-length(//element1/element2/text())-4))

3 个答案:

答案 0 :(得分:1)

使用XPath v2.0,您可以应用以下内容(连接前5个字符串的4个符号,并将它们除以'_'):

//element1/element2/text()/concat(substring(.,1,5),"_",substring(.,string-length(.)-3))
  • . - 指向当前所选节点

注意,要提取最后的 4 字符,您应将起始位置指定为string-length(.)-3

答案 1 :(得分:1)

这是一个XPath 2.0解决方案:

man 5 proc

与您的解决方案不同,它假设字符串长度至少为9个字符。

答案 2 :(得分:0)

至于我,它还不错。 但是你的代码需要5个最后的符号。为了解决这个问题,我使用string-length(// element1 / element2)-3 也许,text()不是必需的,但我已经通过xslt处理了代码。

整个表达式如下:

的concat(子串(//元素1 / element2,1,5)&#34; _&#34;,子串(//元素1 / element2的,串长度(//元素1 / element2的)-3))< / p>

相关问题