XPATH:如何选择包含某些文本的元素,而其同级元素不包含其他文本

时间:2019-11-09 21:33:57

标签: xpath

<a>
   <b>
      "Something"
   </b>
   <c>
      "Something else"
   </c>
</a>
<d>
    <e>
     "Something"
    </e>
    <f>
      "Foo"
    </f>
</d>


我想选择包含文本“ Something”的元素,但没有包含“ Something Else”的兄弟姐妹。 (在此示例中,我想选择“ e”)

这是我尝试过的

//*[contains(text(), 'Something') and ../*[not(contains(text(), 'Something Else'))]]

1 个答案:

答案 0 :(得分:0)

这是您可以使用的xpath。

//label[contains(.,'Something') and following-sibling::label[not(contains(.,'Something else'))]]

下面是示例html和解决方案屏幕截图。

<html><head></head><body>
		<div>
   <label>
      "Something"
   </label>
   <label>
      "Something else"
   </label>
</div>
<div>
    <label>
     "Something"
    </label>
    <label>
      "Foo"
    </label>
</div>
	
</body></html>

截屏: enter image description here