У меня есть такой элемент:
<td> TextA <br/> TextB </td>
Как я могу извлечь TextA и TextB отдельно?
У меня есть такой элемент:
<td> TextA <br/> TextB </td>
Как я могу извлечь TextA и TextB отдельно?
Несколько путей. Это действительно зависит от самого документа и от того, является ли данная HTML-разметка последовательной или нет. В этом конкретном примере вы можете получить дочерние узлы td
с помощью Element#childNodes()
, а затем протестировать каждый узел отдельно, если это TextNode
или нет.
E.g.
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 />
в вашем примере).