检查表数据 - Jsoup

时间:2013-10-04 20:50:44

标签: java android jsoup indexoutofboundsexception

有没有办法使用jsoup检查某个表是否有某一行?

我收到java.lang.IndexOutOfBoundsException: Invalid location 1, size is 1个例外,我从表中获取信息的代码是:

  docTide = Jsoup.connect("http://www.mhpa.co.uk/search-tide-times/").timeout(600000).get();
  Elements tideTimeOdd = docTide.select("div.tide_row.odd div:eq(0)");
  Elements tideTimeEven = docTide.select("div.tide_row.even div:eq(0)");
  Elements tideHightOdd = docTide.select("div.tide_row.odd div:eq(2)");
  Elements tideHightEven = docTide.select("div.tide_row.even div:eq(2)");
  Element firstTideTime = tideTimeOdd.first();
  Element secondTideTime = tideTimeEven.first();
  Element thirdTideTime = tideTimeOdd.get(1);
  Element fourthTideTime = tideTimeEven.get(1);

发生异常是因为有时表只有3行而不是4行,按此顺序排列; 奇 甚至 奇 甚至

这是造成问题的最后一个'偶数'行。

  <div class="tide_row odd"> 
  <div class="time">00:57</div>
  <div class="height_m">4.9</div>
  <div class="height_f">16,1</div>
  <div class="range_m">1.9</div>
  <div class="range_f">6,3</div>
  </div>
  <div class="tide_row even">
  <div class="time">07:23</div>
  <div class="height_m">2.9</div>
  <div class="height_f">9,6</div>
  <div class="range_m">2</div>
  <div class="range_f">6,7</div>
  </div>
  <div class="tide_row odd">
  <div class="time">13:46</div>
  <div class="height_m">5.1</div>
  <div class="height_f">16,9</div>
  <div class="range_m">2.2</div>
  <div class="range_f">7,3</div>
  </div>
  <div class="tide_row even">
  <div class="time">20:23</div>
  <div class="height_m">2.8</div>
  <div class="height_f">9,2</div>
  <div class="range_m">2.3</div>
  <div class="range_f">7,7</div>
  </div>

2 个答案:

答案 0 :(得分:2)

要简单地检查Elements对象的大小,请使用size()方法确定它是否存在。

要检查某个Element,请使用contains()方法。

您也可以考虑使用循环来迭代Element集合中的所有Elements个对象。


if(tideTimeEven.size() > 1)
    //Do something

答案 1 :(得分:1)

你可以做到

if (tideTimeEven.size() > 1) {
    Element fourthTideTime = tideTimeEven.get(1);
}