获取属性的子字符串不起作用

时间:2015-09-21 10:29:57

标签: xpath substring

这是HTML代码:

<table id="laptop_detail" class="table">
    <tbody>
        <tr>
            <td style="padding-left:36px" class="ha">&nbsp;Camera Pixels &nbsp;</td>
            <td class="val">8 megapixel camera</td>
        </tr>
    </tbody>
</table>

我如何只获得chrome中第一个“8”的字符?到目前为止,我的方法是:

$x('//*[@id="laptop_detail"]//tr/td[contains(. ,"Camera")]/following-sibling::td[1]/text()[substring(. , 0, 2)]')

1 个答案:

答案 0 :(得分:1)

不要将输出所需的函数放入谓词中,而是将其应用于节点:

substring(//*[@id="laptop_detail"]//tr/td[contains(., "Camera")]/following-sibling::td[1], 1, 1)

请注意,在XPath中,字符串中的字符从1开始编号,而不是0。

此外,您不需要指定text()substring知道它应该对字符串进行操作。

顺便说一句,如果百万像素的数量是10,你真的想得1吗?也许

substring-before(..., ' ')

会更好吗?