我使用XPath的问题是每当我使用“substring”函数时,我只得到一个匹配,我想得到它们。 另一个问题是每当我使用“substring”和operator |的组合时它只是不起作用(没有匹配)。
在这个网页上我使用了查询
//SPAN[@class='ratingDate relativeDate']/@title | //*[@class='ratingDate']/text()
我有10场比赛,但其中一些以“已审核”开头。所以我添加了“substring-after” 并且没有得到任何比赛
原始语法:
//SPAN[@class='ratingDate relativeDate']/@title | substring-after(//*[@class='ratingDate']/text(), 'Reviewed ')
答案 0 :(得分:3)
使用纯XPath 1.0无法解决这个问题,如果您使用XPath 2.0或XQuery 1.0,则可以将substring-after
调用放入路径的最后一步,例如: //*[@class='ratingDate']/substring-after(., 'REVIEWED')
。
如果你只有XPath 1.0,那么首先需要用XPath选择元素,然后用宿主语言迭代结果,为每个元素提取子字符串;如何做到这取决于主机语言和XPath API。