Neeme Praks ответил очень хорошо и правильно сохранил пробелы. Тем не менее, встроенный HTML действительно портит это.
<span>This is<br />some text. Cool story.</span>
Результаты в
"This is"
Или, если вы передаете элемент, который не имеет собственного текста, он возвращает ноль.
Так что мне пришлось немного переделать метод для моих целей. Это может помочь некоторым людям, поэтому я публикую это здесь. Основная идея состоит в том, чтобы итерировать детей вместо того, чтобы просто брать первого. Это также включает в себя случай, чтобы захватить HTML для любых элементов без детей.
Таким образом возвращается оригинальный фрагмент:
This is<br />some text. Cool story.
public static String getText(Element cell) {
StringBuilder textBuilder = new StringBuilder();
for (Node node : cell.childNodes()) {
if (node instanceof TextNode) {
textBuilder.append(((TextNode)node).getWholeText());
}
else {
for (Node childNode : node.childNodes()) {
textBuilder.append(getText((Element)childNode));
}
textBuilder.append(node.outerHtml());
}
}
if (cell.childNodes().isEmpty()) {
textBuilder.append(cell.outerHtml());
}
return textBuilder.toString();
}