xPath: select 一系列兄弟节点,直到一个特定的兄弟节点
xPath: select a range of sibling nodes until a specific sibling node
我有以下 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>
我一直在尝试获取每个超级类别之后的所有 "level-2"。因此,对于第一个超类别,xpath 匹配将是 4 个子类别兄弟 lis,第二个超类别 xpath 将 return 3 lis 和等等。
我已经尝试了几种方法,但最简单的开始是这样的:
//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"]
我正在尝试在第 2 个超类别之后获取第 3 个子类别 lis 但显然这将 return 所有 lis 与类 子类别。
因此,我想知道是否有更适合解决此问题的谓词。特别是在这种情况下,子类别是其超类别的兄弟节点。
为方便起见,我一直在此处进行测试:https://www.freeformatter.com/xpath-tester.html
提前致谢。
你是如何使用 xpath 的?
如果您只是遍历超类别并因此知道它们的位置并可以动态构建 xpath,您可以简单地计算前面的子类别。
//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"][count(preceding-sibling::li[@class='supercategory']) = 2]
我有以下 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>
我一直在尝试获取每个超级类别之后的所有 "level-2"。因此,对于第一个超类别,xpath 匹配将是 4 个子类别兄弟 lis,第二个超类别 xpath 将 return 3 lis 和等等。
我已经尝试了几种方法,但最简单的开始是这样的:
//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"]
我正在尝试在第 2 个超类别之后获取第 3 个子类别 lis 但显然这将 return 所有 lis 与类 子类别。
因此,我想知道是否有更适合解决此问题的谓词。特别是在这种情况下,子类别是其超类别的兄弟节点。
为方便起见,我一直在此处进行测试:https://www.freeformatter.com/xpath-tester.html
提前致谢。
你是如何使用 xpath 的?
如果您只是遍历超类别并因此知道它们的位置并可以动态构建 xpath,您可以简单地计算前面的子类别。
//li[@class="supercategory"][position()=2]/following-sibling::li[@class ="subcategory"][count(preceding-sibling::li[@class='supercategory']) = 2]