2016-04-14 2 views
0

Я хочу выбрать один элемент html, основанный на позиции другого с помощью xpath. Например:Выберите один элемент xpath, основанный на позиции другого

<table> 
    <tr> 
     <th> 
      Col1 
     </th> 
     <th> 
      Col2 
     </th> 
     <th> 
      Col3 
     </th> 
     <th> 
      Col4 
     </th> 
    </tr> 
    <tr> 
     <td> 
      Value1 
     </td> 
     <td> 
      Value2 
     </td> 
     <td> 
      Value3 
     </td> 
     <td> 
      Value4 
     </td> 
    </tr> 
</table> 

В этом примере я хочу тд, который находится в том же положении, в коллекции с.в., что е с содержанием Col2 есть.

я могу найти позицию я

//th[contains(.,'Col2')] 

Я хочу, чтобы избежать этого

//td[2] 

Есть ли способ, что я могу связать два?

ответ

2

Это один из возможных способов:

//td[ 
    position() = count(//th[contains(.,'Col2')]/preceding-sibling::th)+1 
] 

xpathtester demo

XPath возвращает td в положении равна позиции th. позиция th рассчитывается путем подсчета числа предшествующего брата th, +1, поскольку индекс позиции XPath начинается с 1.

Смежные вопросы