【发布时间】:2013-04-25 15:39:58
【问题描述】:
我想使用 jsoup 在每个标签之后提取一个文本。有什么方法可以直接选择它还是我必须对整个事情执行 .substring ?
<div>
<a href="#"> I don't want this text </a>
**I want to retrieve this text**
</div>
【问题讨论】:
我想使用 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()选择它的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());
}
【讨论】: