XPATH:选择一定范围的兄弟节点,直到一个特定的兄弟节点

问题描述:

我有以下李氏XPATH:选择一定范围的兄弟节点,直到一个特定的兄弟节点

<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> 

我一直在试图让所有的“二级” S每个超级后到来类别。因此,对于第一个超类别,xpath匹配将是4个子类别同级lis和第二个超级类别xpath将返回3 lis等等。

我已经试过几件事情,但一个简单的开始会是这样的:

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

我试图让3子类别三里屯第二supercategory之后,但显然这将返回所有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] 
+0

对不起,我忘了指定xpath规则是为了获取第二个超类别的子类别。这似乎也适用于其他子类别。 – Orochi1992

+0

那么,如果你只想得到第二个超类别的子类别,这就是你应该使用的xpath。 –

+0

经过一些小的修改,它可以适应其他超级类别。所以谢谢它的作品。 – Orochi1992