Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath获取两个元素之间的元素_Xpath - Fatal编程技术网

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

Xpath获取两个元素之间的元素,xpath,Xpath,有人能告诉我是否可以从这个html片段中只选择div2a和2b? 问题是div不是h4元素的子元素,因此xpath查询应该说“获取介于h4='Two'和h4='Two'之后的div” 注意,我希望查询是动态的,并告诉她开始元素(h4='Two')和结束元素(任意h4),然后告诉她在哪个过滤器上获取元素 <h4>One</h4> <div>1a</div> <div>1b</div> <div>1c</div

有人能告诉我是否可以从这个html片段中只选择div2a和2b? 问题是div不是h4元素的子元素,因此xpath查询应该说“获取介于h4='Two'和h4='Two'之后的div” 注意,我希望查询是动态的,并告诉她开始元素(h4='Two')和结束元素(任意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>
1
1a
1b
1c
两个
2a
2b
三
3a
3b
3c

我想这也会得到元素3a、3b、3c。我只需要元素2a和2b,这在h4[1]中是什么意思?
前面的兄弟姐妹::h4[1]
表示前面的第一个
h4
。因此,对于3a/3b/3c,它将是
三个
,这就是它们不会出现在结果中的原因。还要注意,此查询还将选择“末尾”的节点,即前面的
,但后面不会有一个。如果要检查这一点,请添加
[…和后面的兄弟姐妹::h4]
到筛选器应该可以。这将起作用,但我需要它是泛型的。我的意思是,可以通过文本“2”搜索前面的兄弟姐妹,但我需要下面的兄弟姐妹是任意结尾,不通过文本过滤
div[preceding-sibling::h4[1] = 'Two']
div[preceding-sibling::h4='Two' and following-sibling::h4='Three']