Jsoup - проблема выбора тега - PullRequest
1 голос
/ 03 ноября 2010

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

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

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

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

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

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

1 Ответ

2 голосов
/ 03 ноября 2010

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

Например, на ваш вопрос: «выберите тд, следующий за первым»

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

    • :lt(n) - элементы, у которых индекс брата меньше n
  • Селектор брата: у вас есть два варианта:

    • E + F - элемент F, которому непосредственно предшествует брат E
    • E ~ F - элемент F, которому предшествует брат E

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

Финальный код:

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

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

...