Michaël
Michaël

Reputation: 3671

Jsoup - Problem selecting a tag

Is there a way to select an element following another one?

For example if I have :

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

and I want to select the first th I can do :


Elements select = Jsoup.parse(HTML_PAGE).select("th");
Element element = select.get(0);
But how can I do to say : select the td that follow the first th?

Thank you for your help.

Upvotes: 1

Views: 1624

Answers (1)

Tomas Narros
Tomas Narros

Reputation: 13468

You can use an combine different JSoup Selectors.

For instance, for your question: "select the td that follow the first th"

  • lt pseudo selector:

    • :lt(n) - elements whose sibling index is less than n
  • Sibling selector: you have two options:

    • E + F - an F element immediately preceded by sibling E
    • E ~ F - an F element preceded by sibling E

So, for selecting the first th it would be th:lt(1), and for the td that follows it + td.

The final code:

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

The element returned will be the td tag immediately preceded by the first th tag found.

Upvotes: 2

Related Questions