Xpath获取2个元素之间的元素

Kar*_*rim 3 xpath

任何人都可以告诉我是否可以从这个html片段中仅选择div 2a和2b?问题是div不是h4元素的子元素,因此xpath查询应该说"得到h4 ='2'之间的div和h4之后的h4 ='2'注意我想要的查询是动态的,你告诉她start元素(h4 ='Two')和end元素(任何h4),然后在哪个过滤器之间获取元素.

<h4>One</h4>
<div>1a</div>
<div>1b</div>
<div>1c</div>
<h4>Two</h4>
<div>2a</div>
<div>2b</div>
<h4>Three</h4>
<div>3a</div>
<div>3b</div>
<div>3c</div>
Run Code Online (Sandbox Code Playgroud)

Pav*_*aev 10

div[preceding-sibling::h4[1] = 'Two']
Run Code Online (Sandbox Code Playgroud)

  • `preceding-sibling :: h4 [1]`表示_first_前面的`h4`.因此,对于3a/3b/3c,它将是"<h4>三</ h4>",这就是它们不会出现在结果中的原因.另请注意,此查询还将选择"最后"的节点 - 即那些在"<h4>"之前的节点,但不会跟随一个节点.如果你想检查一下,在过滤器中添加`[...和following-sibling :: h4]`就可以了. (3认同)

Cri*_*spy 5

div[preceding-sibling::h4='Two' and following-sibling::h4='Three']
Run Code Online (Sandbox Code Playgroud)