检查跨度的可空状态
Checking nullable state of spans
我用 jsoup 解析了两个元素,它们的跨度相同:
span.icon-list__title
问题是:第一个跨度总是存在,但第二个跨度可能不存在。我尝试了 for
循环,做迭代器检查第一个然后是下一个:
Iterator t = third.select("span.icon-list__title").iterator();
if (t.hasNext()) {
title_software = t.next().toString();
//first behaviour
while (t.hasNext()) {
photo_time = t.next().toString();
}
}
但我似乎总是得到java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2 error
,因为跨度似乎不存在。有没有办法在解析之前检查它是否存在?
问题是我有两个单独的字符串值。
基本上我有 3 divs
of class icon-list
,可以为空(不存在),每个 div 有两个divs:
icon-list__title
和 icon-list__infos
,第三个除外。
无论如何我可以检查每个项目是否为空?我似乎无法将项目存储在适当的字符串变量中。
只有第三个div有两个跨度class icon-list__title
.
这是HTML:
<div class="icon-list">
<div class="icon-list__icon">
<i class="icon-expand"></i>
</div>
<div class="icon-list__content">
<div class="icon-list__title">4000 x 2667 pixels</div>
<div class="icon-list__infos">
<span>3.0 MB</span>
</div>
</div>
</div>
<div class="icon-list">
<div class="icon-list__icon">
<i class="icon-camera"></i>
</div>
<div class="icon-list__content">
<div class="icon-list__title">
450
</div>
<div class="icon-list__infos">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
</div>
</div>
<div class="icon-list">
<div class="icon-list__icon">
<i class="icon-info"></i>
</div>
<div class="icon-list__content">
<span class="icon-list__title">
Span span 1
</span>
<span class="icon-list__title">
Span span 2
</span>
</div>
</div>
一切都可以为空。
如果我使用 foreach 循环并将所有内容都放在 recyclerview 中是不是最好?
像这样的东西怎么样,非常静态的代码,但可能会完成工作:
Elements result = third.select("span.icon-list__title");
if (result.size() > 0) {
title_software = result.get(0).toString();
}
if (result.size() > 1) {
photo_time = result.get(1).toString();
}
System.out.println(title_software);
System.out.println(photo_time);
我用 jsoup 解析了两个元素,它们的跨度相同:
span.icon-list__title
问题是:第一个跨度总是存在,但第二个跨度可能不存在。我尝试了 for
循环,做迭代器检查第一个然后是下一个:
Iterator t = third.select("span.icon-list__title").iterator();
if (t.hasNext()) {
title_software = t.next().toString();
//first behaviour
while (t.hasNext()) {
photo_time = t.next().toString();
}
}
但我似乎总是得到java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2 error
,因为跨度似乎不存在。有没有办法在解析之前检查它是否存在?
问题是我有两个单独的字符串值。
基本上我有 3 divs
of class icon-list
,可以为空(不存在),每个 div 有两个divs:
icon-list__title
和 icon-list__infos
,第三个除外。
无论如何我可以检查每个项目是否为空?我似乎无法将项目存储在适当的字符串变量中。
只有第三个div有两个跨度class icon-list__title
.
这是HTML:
<div class="icon-list">
<div class="icon-list__icon">
<i class="icon-expand"></i>
</div>
<div class="icon-list__content">
<div class="icon-list__title">4000 x 2667 pixels</div>
<div class="icon-list__infos">
<span>3.0 MB</span>
</div>
</div>
</div>
<div class="icon-list">
<div class="icon-list__icon">
<i class="icon-camera"></i>
</div>
<div class="icon-list__content">
<div class="icon-list__title">
450
</div>
<div class="icon-list__infos">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
</div>
</div>
<div class="icon-list">
<div class="icon-list__icon">
<i class="icon-info"></i>
</div>
<div class="icon-list__content">
<span class="icon-list__title">
Span span 1
</span>
<span class="icon-list__title">
Span span 2
</span>
</div>
</div>
一切都可以为空。
如果我使用 foreach 循环并将所有内容都放在 recyclerview 中是不是最好?
像这样的东西怎么样,非常静态的代码,但可能会完成工作:
Elements result = third.select("span.icon-list__title");
if (result.size() > 0) {
title_software = result.get(0).toString();
}
if (result.size() > 1) {
photo_time = result.get(1).toString();
}
System.out.println(title_software);
System.out.println(photo_time);