阅读:2916回复:6
[已解决] 请教一句 document.evaluate 的写法
测试页面:https://www.firefox.net.cn/index.php?m=3g
用Chrome下的Xpather调试,语法明明是正确的: 但偏偏console里总是报错,愣是没看出,哪里写错了: test = document.evaluate('//td[@class="subject"][p[@class="info"]/contains(., "楼主:fang5566")]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 哪位前辈朋友,提点一下?谢谢^_^ |
|
1楼#
发布于:2018-02-12 16:58
xpath还能像楼主这样写吗
我只会下面这种写法 //td[@class="subject"]/p[@class="info"][contains(.,"fang5566")] |
|
2楼#
发布于:2018-02-12 17:29
哦,我看懂了,楼主要的是.subject的集合
那这样写 //td[@class="subject"]/p[@class="info"][contains(., "楼主:fang5566")]/.. 或者//p[@class="info"][contains(., "楼主:fang5566")][parent::td[@class="subject"]]/.. |
|
3楼#
发布于:2018-02-12 23:06
|
|
4楼#
发布于:2018-02-13 09:42
|
|
5楼#
发布于:2018-02-13 13:19
语法错误是因为 contains 函数不能作为 node test 使用。见:
https://www.w3.org/TR/xpath/#node-tests 将 '//td[@class="subject"][p[@class="info"]/contains(., "楼主:fang5566")]' 改为 '//td[@class="subject"][p[@class="info"][contains(., "楼主:fang5566")]]' 或 '//td[@class="subject"][p[@class="info"]/.[contains(., "楼主:fang5566")]]' 则语法正确。 而语义更清晰的写法,如四楼提到的,为: '//td[@class="subject"][contains(p[@class="info"], "楼主:fang5566")]' 或 '//td[@class="subject"]/p[@class="info"][contains(., "楼主:fang5566")]/..' |
|
6楼#
发布于:2018-02-13 14:32
myhead:语法错误是因为 contains 函数不能作为 node test 使用。见:原来还有node test的说法,什么时候用/什么时候用[],我老是分不清楚,谢谢前辈指点! |
|