XPath previous-sibling根据父母的sibbling值找到孩子?

时间:2015-04-15 14:25:21

标签: html xpath axis

我有以下内容:

..

<div id="list">
  <div>
    <input id="input_randomnumber"/>
  </div>
  <div>
    <label for="input_randomnumber">Text To Match</label>
  </div>
</div>

..

我想选择输入,其中有一个带有特定文本的标签。我尝试使用xpath和前兄弟解决它,但我没有让它工作。如何将轴选择器用作过滤器?

显然,以下解决方案甚至无效:

(//div[@id="list"]/div/preceding-sibling::div[span[text()="Text To Match"]])/input

从以下答案中,这些解决方案有效:

使用轴:

//div[@id = 'list']/div[following-sibling::div[1]/label = 'Text To Match']/input

使用@for和@id匹配,相当优雅(但性能?):

//input[@id = //label[text()="Text To Match"]/@for]

2 个答案:

答案 0 :(得分:2)

我想你想要//div[@id = 'list']/div[following-sibling::div[1]/label = 'Text To Match']/input

答案 1 :(得分:1)

  

我想选择输入,其中有一个带有特定文本的标签。

这是你可以尝试的东西:

<label>的文字选择:

//input[@id = //label[text()="Text To Match"]/@for]

根据for的{​​{1}}属性和<label>的{​​{1}}属性进行选择:

id