Xpath - 如果只包含某些文本,我如何从span类返回数值?

时间:2013-12-24 16:32:19

标签: xpath

这是我的代码:

<span class="price-val_90931611 odd-val ib right">

如果span类包含“price-val”,我如何仅返回“90931611”并且我只想要它返回。

感激不尽的任何帮助。

2 个答案:

答案 0 :(得分:0)

有点弯曲,但仍然

translate(substring-after(//*[contains(@class,'price-val')]/@class,'price-val_'),' odd-val ib right','')

<强> UPD:

substring(substring-after(//*[contains(@class,'price-val')]/@class,'price-val_'), 1, 8)

如果已知该号码由8位数字组成。

答案 1 :(得分:0)

如果你知道目标字符串后面会有一个空格(即它不是唯一的类名或值中的最后一个类名),那么以下内容将起作用:

substring-before(
    substring-after(//span[contains(@class, 'price-val')]/@class, 'price-val_'), 
    ' ')

如果最后一个(或唯一的)类名,那么您只需要这样:

substring-after(//span[contains(@class, 'price-val')]/@class, 'price-val_')

如果您不确定,或者您想要灵活(总是一个好主意),以下情况将适用于任何情况:

substring-before(
    substring-after(concat(' ', 
                           //span[contains(@class, 'price-val')]/@class, 
                           ' '), 
                    'price-val_'), 
    ' ')

这显然更加丑陋,但是通过使用concat用空格包围目标类,我们能够保证外部函数在每种可能的情况下都获取我们正在寻找的值。