2017-08-14 320 views
0

我有以下李氏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

感謝:

爲了方便起見,我一直在這裏測試此。

回答

0

你是如何使用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

相關問題