我想使用 jsoup 在每个标签之后提取一个文本。有什么方法可以直接选择它还是我必须对整个事情执行 .substring ?
<div>
<a href="#"> I don't want this text </a>
**I want to retrieve this text**
</div>
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**
是的你可以。
<div>
,然后使用选择它的 html.html()
<a>
元素,并获取它的 html<a>
元素 html的长度尽管提供了解决方向,但我认为上述答案缺乏普遍性。
nextSibling()
在 html 结构更改时无法使用。
当我参考 Jsoup api 时,我发现了一个名为 的方法textNodes()
,它可以从这个元素中获取文本节点的列表。
public static String getTextAfterTag(Element ele) {
String text = "";
for(TextNode node: ele.textNodes()) {
text += node.text();
}
return text;
}
希望有所帮助。
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());
}