xPath:选择一系列同级节点,直到特定的同级节点



我有以下Lis

<ul>
//1st subcategory with 4 sub categories        
<li class="supercategory"></li>
<li class="subcategory"></li>
<li class="subcategory"></li>
<li class="subcategory"></li>
<li class="subcategory"></li>
//2nd subcategory with 3 sub categories 
<li class="supercategory"></li>
<li class="subcategory"></li>
<li class="subcategory"></li>
<li class="subcategory"></li>
//3d subcategory with 1 sub category
<li class="supercategory"></li>
<li class="subcategory"></li>
</ul>

我一直在尝试获得每个超级类别之后的所有"2级"。因此,对于第一个超级类别,xpath 匹配将是 4 个子类别同级lis,第二个超级类别 xpath 将返回 3个 lis,依此类推。

我已经尝试了几件事,但简单的开始是这样的:

//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"]

我正在尝试在第二个超级类别之后获取 3 个子类别lis,但显然这将返回所有带有类子类别的lis

因此,我想知道是否有一个谓词更适合解决这个问题。特别是在这种情况下,子类别是具有其超类别的同级节点。

为了方便起见,我一直在这里测试这个:https://www.freeformatter.com/xpath-tester.html

提前谢谢。

你如何使用 xpath?

如果您只是遍历超类别,从而知道它们的位置并且可以动态构建 xpath,则可以简单地计算前面的 subercategories。

//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"][count(preceding-sibling::li[@class='supercategory']) = 2]

最新更新