我有以下 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>
我一直在尝试获得每个超级类别之后的所有&#34; level-2&#34; s。因此,对于第一个超类别,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
提前致谢。
答案 0 :(得分:0)
你是如何使用xpath的?
如果您只是遍历超类别并因此知道它们的位置并且可以动态地构建xpath,那么您可以简单地计算前面的subercategories。
//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"][count(preceding-sibling::li[@class='supercategory']) = 2]