2016-07-21 74 views
2

我有這樣的XPath:Xpath的孩子

.//*[@id='some_id']/td//div 

,現在我想選擇是某種類型的,例如每一個孩子要麼是一個標籤或跨度的div的兒童。像這樣的東西

.//*[@id='some_id']/td//div/(label|span)/....... 

但這是無效的xpath。我怎樣才能做到這一點(wthout寫爲給定的2例兒童類型的兩個完整的XPath)

+0

'.//*[@id='some_id ']/td // div/* [self :: label or self :: span]' – splash58

+0

您提供的路徑('td/div /(label | span)')在XPath 2.0中有效,但不在XPath 1.0中。如果您只對1.0感興趣,請爲您的問題添加「XPath 1.0」。 –

回答

2

你需要使用特定元素的

後裔::

選擇子元素。看看下面的例子中,

.//*[@id='some_id']/td//div/descendant::label[@class='some-class'] 

以上的XPath將得到帶班「的一些一流」,這實際上是「.//*[@id='some_id']/td//的孩子所有的標籤div /「元素。

找到多個子元素,然後用下面的XPath,

.//*[@id='some_id']/td//div/descendant::*[local-name()='label' or local-name='span'] 
+0

後代::涵蓋兒童,孫輩和所有其他後代,而不僅僅是兒童。結果可能有不需要的標籤。 –

2

descendant::的發現下面的所有級別,只找到孩子使用

.//*[@id='some_id']/td//div/*[self::label or self::span]