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]
对不起,我忘了指定xpath规则是为了获取第二个超类别的子类别。这似乎也适用于其他子类别。 – Orochi1992
那么,如果你只想得到第二个超类别的子类别,这就是你应该使用的xpath。 –
经过一些小的修改,它可以适应其他超级类别。所以谢谢它的作品。 – Orochi1992