我想使用jsoup在每个标记之后提取文本。有没有办法直接选择它,还是我必须在整个事情上执行.substring?
<div>
<a href="#"> I don't want this text </a>
**I want to retrieve this text**
</div>
答案 0 :(得分:27)
public static void main(String... args) throws IOException {
Document document = Jsoup.parse("<div>"
+ "<a href=\"#\"> I don't want this text </a>"
+ "**I want to retrieve this text**" + "</div>");
Element a = document.select("a").first();
Node node = a.nextSibling();
System.out.println(node.toString());
}
输出
**I want to retrieve this text**
答案 1 :(得分:0)
是的,你可以。
<div>
的html,然后使用.html()
<a>
元素,并获取它的html <a>
元素的html 答案 2 :(得分:0)
我认为,尽管提供了解决方向,但上述答案缺乏普遍性。
当html结构改变时, nextSibling()
无法使用。
当我参考Jsoup api时,我找到了一个名为textNodes()
的方法,它可以从该元素中获取文本节点列表。
public static String getTextAfterTag(Element ele) {
String text = "";
for(TextNode node: ele.textNodes()) {
text += node.text();
}
return text;
}
希望能提供帮助。
答案 3 :(得分:0)
Document doc = Jsoup.parse("<div>"
+ "<a href=\"#\"> I don't want this text </a>"
+ "**I want to retrieve this text**" + "</div>");
Elements tags = doc.getElementsByTag("a");
for(Element tag : tags) {
System.out.println(tag.text());
}