我正在尝试在JSoup
中获取Java
的网页的一些数据。我正在使用JSoup
和JSON
解析器的混合来做到这一点。
假设在网页中有很多具有相同类名的元素,在另一个元素中也有相应的类名,例如:
<div class="foo">
<span class="bar">Whatever</span>
</div>
我检索所有元素的bar
类中的数据,如下所示:
Elements elements = Jsoup
.parse(html)
.body().select(".foo .bar");
问题来了,因为有些div没有span
标签,所以当我检索网页所包含的完整元素集合时,不会附加不存在的元素(它有意义) ,但我需要检测这些元素。)
我想稍后将所有数据存储在某处,但是维护列表的顺序,我的意思是,在-
不存在span
的元素中放置,因为如果不存在,你有以下顺序:
1. foo
2. null
3. bar
仅存储第一和第三位置数据,第三位置将是第二位置。
是否可以使用JSoup
检测空引用?
提前致谢!
答案 0 :(得分:1)
Jsoup选择仅返回现有元素。 要检测缺少的元素,您可以先查询顶部选择器,然后迭代结果以检查top元素是否包含所需的子元素:
Elements fooElements = Jsoup
.parse(html)
.body().select(".foo");
Elements elements = new Elements()
for(Element el : fooElements) {
elements.add(el.select(".bar").first());
}
在上面的示例中,elements
将包含foo
类和null的跨度。