Tôi có một yếu tố như thế này:Làm thế nào để trích xuất các nút văn bản riêng biệt với Jsoup?
<td> TextA <br/> TextB </td>
Làm thế nào tôi có thể trích xuất TextA và TextB riêng?
Tôi có một yếu tố như thế này:Làm thế nào để trích xuất các nút văn bản riêng biệt với Jsoup?
<td> TextA <br/> TextB </td>
Làm thế nào tôi có thể trích xuất TextA và TextB riêng?
Một số cách. Điều đó thực sự phụ thuộc vào bản thân tài liệu và liệu việc đánh dấu HTML đã cho có nhất quán hay không. Trong ví dụ cụ thể này, bạn có thể nhận được các nút con của td
bằng cách Element#childNodes()
và sau đó kiểm tra từng nút riêng lẻ nếu đó là một TextNode
hay không.
Ví dụ:
Element td = getItSomehow();
for (Node child : td.childNodes()) {
if (child instanceof TextNode) {
System.out.println(((TextNode) child).text());
}
}
mà kết quả trong
TextA TextB
Tôi nghĩ rằng nó sẽ được tốt đẹp nếu Jsoup cung cấp một Element#textNodes()
hoặc một cái gì đó để có được các nút văn bản con giống như Element#children()
làm để có được những yếu tố con (mà đã có thể trở lại thành phần <br />
trong ví dụ của bạn).
Tôi đã triển khai Element # textNodes() cho 1.6.2, cảm ơn đề xuất. https://github.com/jhy/jsoup/commit/7b9f17760049161b775fd23b15653961620e259d –
@JonathanHedley Bạn là người tiết kiệm cuộc sống! Tôi không thể cảm ơn đủ cho công việc khó khăn của bạn. Mã và nhận xét của bạn là hoàn hảo và đã tiết kiệm cho tôi số giờ của Google và StackOverflow. – stackular