我还是html的新手。对于Android项目,我需要使用jsoup从html字符串中提取一些数据。结构是这样的。所有span标签都具有相同的类名。我需要的数据介于每个数据之间。
<span class="head">a</span>
xxxx data xxxx
<span class="head">b</span>
xxxx data xxxx
<span class="head">c</span>
xxxx data xxxx
有什么方法可以提取它吗?
答案 0 :(得分:3)
你需要做两件事:
nextSibling
方法获取文本节点。看看这个示例代码: import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.TextNode;
public class JsoupExample {
public static void main(String[] args) {
String html = "<span class=\"head\">a</span>\n" +
"xxxx data xxxx\n" +
"<span class=\"head\">b</span>\n" +
"xxxx data xxxx\n" +
"<span class=\"head\">c</span>\n" +
"xxxx data xxxx";
Document document = Jsoup.parse(html);
for (Element span : document.select("span.head")) {
TextNode node = (TextNode) span.nextSibling();
assert "xxxx data xxxx".equals(node.text());
System.out.println(node.text());
}
}
}
它使用您的输入并显示两个步骤。
这里document.select("span.head")
我们选择了类head
的所有元素,然后我们使用forEach(span -> {})
函数和lambda表达式迭代这些元素(这是Java 8示例)。然后我们使用以下函数获得有趣的文本节点:TextNode node = (TextNode) span.nextSibling();
这里我们只是通过使用断言检查文本节点是否等于我们期望的值,我们只是将其显示为标准输出。
根据您的需要修改此代码示例。我希望它可以帮助你。