是否可以使用JSoup检测空引用?

时间:2016-04-20 15:43:12

标签: java jsoup

我正在尝试在JSoup中获取Java的网页的一些数据。我正在使用JSoupJSON解析器的混合来做到这一点。

假设在网页中有很多具有相同类名的元素,在另一个元素中也有相应的类名,例如:

<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检测空引用?

提前致谢!

1 个答案:

答案 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的跨度。