Neeme Praks的回答非常好,正確保留了空格。但是,內聯HTML真的會弄亂它。
<span>This is<br />some text. Cool story.</span>
結果
"This is"
或者,如果你在沒有自己的文字的元素傳遞,則返回null。
所以我不得不爲了我的目的重做這個方法。這可能會幫助一些人,所以我在這裏發佈。基本思想是迭代孩子,而不是僅僅考慮第一個。這還包括爲沒有孩子的任何元素獲取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();
}
我這裏的空白事項和文本穿插着''
一個標籤同樣不尋常的使用情況。我放棄了你的方法,現在一切都很順利(在過去的兩天裏花了數小時的時間)。感謝您花時間發佈您的方法。 – Paul 2017-01-11 16:40:26
爲什麼你有textBuilder.append(node.outerHtml());?這將複製標籤的內容。即「 hello>」將成爲「你好你好」。我錯過了什麼嗎? – Ammar 2017-08-02 18:16:00