2012-05-01 14 views
7

Mam dwa wyrażenia XPath ...Jak połączyć te wyrażenia xpath?

//*[@id='gutter']/p[strong[text()='Date:']]/text() 
//*[@id='gutter']/p[strong[text()='Time:']]/text() 

Jak mogę napisać jedno wyrażenie XPath, które łączy dwa powyżej wróci te same elementy, jak działa każdy z wyrażeń powyżej indywidualnie?

+0

Czy chodzi ci o "zwrócenie tego samego węzła tekstowego"? –

Odpowiedz

4

Jak o:

//*[@id='gutter']/p[strong[text()='Date:' or text()='Time:']]/text() 

który jest bardziej lub mniej oczywiste.

14

Ogólnie ten Xpath wyrażenie:

expr1 | expr2 

wybiera związek wszystkich wybranych przez WYR1 węzłów i wszystkimi węzłami wybranych przez wyr2.

Znak | oznacza operator unifikacji XPath .

Możesz użyć operatora związkowego w każdym przypadku, gdy chcesz, aby zwinięty węzeł wybrany przez kilka wyrażeń XPath został zwrócony.

W tym konkretnym przypadku:

//*[@id='gutter']/p[strong[text()='Date:']]/text() 
| 
//*[@id='gutter']/p[strong[text()='Time:']]/text() 

Mimo to wyrażenie może zostać zoptymalizowana, to ma tę zaletę, że operator union „działa” we wszystkich takich przypadkach może być wyrażona niemal mechanicznie, oszczędza czas i eliminuje możliwość wprowadzenia błędu przez bardziej skomplikowany refaktoryzacji.

Powiązane problemy