Подтвердить что ты не робот

Как извлечь отдельные текстовые узлы с помощью Jsoup?

У меня есть такой элемент:

<td> TextA <br/> TextB </td>

Как я могу извлечь TextA и TextB отдельно?

4b9b3361

Ответ 1

Несколько способов. Это действительно зависит от самого документа и соответствует ли данная разметка HTML или нет. В этом конкретном примере вы можете получить дочерние узлы td с помощью Element#childNodes(), а затем проверить каждый node отдельно, если это a TextNode или нет.

например.

Element td = getItSomehow();

for (Node child : td.childNodes()) {
    if (child instanceof TextNode) {
        System.out.println(((TextNode) child).text());
    }
}

что приводит к

 TextA 
 TextB 

Я думаю, было бы неплохо, если бы Jsoup предложил Element#textNodes() или что-то, чтобы получить дочерние текстовые узлы, такие как Element#children(), чтобы получить дочерние элементы (которые вернули бы элемент <br /> в вашем примере).

Ответ 2

@JonathanHedley - Не могли бы вы предложить мне лучший способ найти ближайший элемент из узла, который соответствует определенному шаблону регулярных выражений? Например: если у меня есть узел с текстом "Номер карты", и я хотел бы получить ближайший узел со значением 1234 1234 1234 1234, относящийся к регулярному выражению, благодарю вас за помощь!