Как извлечь отдельные текстовые узлы с помощью Jsoup?
У меня есть такой элемент:
<td> TextA <br/> TextB </td>
Как я могу извлечь TextA и TextB отдельно?
Ответ 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, относящийся к регулярному выражению, благодарю вас за помощь!