Jsoup — проблема с выбором тега

Есть ли способ выбрать элемент, следующий за другим?

Например, если у меня есть:

<table>
    <tr>
        <th></th>
        <td></td>
    </tr>
    <tr>
        ...
    </tr>
</table>

и я хочу выбрать первое, что я могу сделать :


Elements select = Jsoup.parse(HTML_PAGE).select("th");
Element element = select.get(0);
Но как я могу сказать: выберите td, которые следуют за первым?

Спасибо за помощь.


person Michaël    schedule 03.11.2010    source источник


Ответы (1)


Вы можете комбинировать различные селекторы JSoup.

Например, для вашего вопроса: «выберите td, которые следуют за первым th»

  • lt псевдоселектор:

    • :lt(n) - elements whose sibling index is less than n
  • Селектор братьев и сестер: у вас есть два варианта:

    • E + F - an F element immediately preceded by sibling E
    • E ~ F - элемент F, которому предшествует родственный элемент E

Итак, для выбора первого th это будет th:lt(1), а для следующего за ним td + td.

Окончательный код:

Elements select = Jsoup.parse(HTML_PAGE).select("th:lt(1) + td");
Element element = select.get(0);

Возвращаемым элементом будет тег td, которому непосредственно предшествует первый найденный тег th.

person Tomas Narros    schedule 03.11.2010
comment
Большое спасибо за ваш ответ! - person Michaël; 03.11.2010