2016-07-21 10 views
2

Ich habe diese XPath:Xpath Kind von mehreren Arten

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

und jetzt will ich ein Kind des div auszuwählen, die von bestimmtem Typ ist zum Beispiel jedes Kind, das entweder ein Etikett oder Spanne ist. So etwas wie dieses

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

aber das ist nicht gültig Xpath. Wie kann ich tun, dass (wthout Schreiben zwei volle XPaths für das gegebene 2 Beispiel für Kind-Typen)

+0

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

+0

Der von Ihnen angegebene Pfad (' td/div/(label | span) ') ist in XPath 2.0 gültig, aber nicht in XPath 1.0 . Bitte kennzeichnen Sie Ihre Fragen "XPath 1.0" wenn Sie nur an 1.0 interessiert sind. –

Antwort

2

Sie

Nachkommen ::

auszuwählen untergeordnete Elemente eines bestimmten Elements verwenden müssen . Blick auf das Beispiel unten

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

die oben XPath werden alle Label mit Klasse bekommen „some-Klasse“, die eigentlich das Kind“.//*[@id='some_id']/td// ist div/"Element.

mehr untergeordneten Elemente dann unter XPath,

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

Nachkommen :: deckt sowohl Kinder, Enkel und alle anderen Nachkommen, nicht nur Kinder. Das Ergebnis könnte unerwünschte Tags enthalten. –

2

descendant:: Funde unten verwenden, um zu finden nur

verwenden Kinder zu finden
.//*[@id='some_id']/td//div/*[self::label or self::span] 
Verwandte Themen