我正在尝试使用 Java
中的 JSoup
获取网页的一些数据。我使用 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
检测空引用?
提前致谢!
最佳答案
Jsoup 选择仅返回现有元素。 要检测丢失的元素,您可以首先查询顶部选择器,然后迭代结果以检查顶部元素是否包含所需的子元素:
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 的跨度。
关于java - 是否可以使用 JSoup 检测空引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748867/