我有一个关于XPath的具体问题。
假设我可以使用此查询从表中获取列:
//div[@id="someid"]/table/tbody/tr/td[9]/text()
但是,我想只在另一个特定节点存在时获取此列。
我尝试过使用:
//div[@id="someid"]/table/tbody/tr/td[9 and boolean(//a/span[@title='specifictitle'])]
然而,这不起作用,因为它返回表中的所有项目。
我有一些特定的限制:
- //div[@id="someid"]/table/tbody/tr
是静态的,无法更改。
- td
不包含有关其所在列的其他信息。
提前致谢!
答案 0 :(得分:1)
2种方法:
//div[@id="someid"]/table/tbody/tr[//a/span[@title='specifictitle']]/td[9]/text()
这种方法更简单,位置无关紧要
这也是满足OP要求的方法,查询应以//div[@id="someid"]/table/tbody/tr
开头
*您基本上可以将条件[//a/span[@title='specifictitle']]
放入您想要的查询中的任何元素(也可以在tbody或table等后面。)
关于HTML代码中元素位置的2个案例:
1)锚元素"之前"你的div与" someid":
//a/span[@title='specifictitle']//div[@id="someid"]/table/tbody/tr/td[9]/text()
2)锚元素""你的div与" someid":
//a/span[@title='specifictitle']/ancestor::div[@id="someid"]/table/tbody/tr/td[9]/text()
在这两种情况下,如果//a/span[@title='specifictitle']
不存在,xpath-query将不会返回结果,如果我理解正确的话,这就是你需要的