Jsoup: безопасные элементы.get(0)

Следующий фрагмент кода извлекает один и только один элемент, а именно элемент first:

  String linkHref = "";
  String linkText = "";
  Elements links = div.getElementsByTag("a");
  for (Element link : links) {
    linkHref = link.attr("href");
    linkText += link.text();              
    break;
  }    

Это действительно громоздкий код по сравнению с кратким links.get(0), но у него есть одна важная особенность: он не выдает IndexOutOfBoundException, если Elements пуст. Вместо этого он просто оставит строки пустыми.

Я могу инкапсулировать это в свою собственную функцию, но мне трудно поверить, что Jsoup уже не имеет такой функции (я предпочитаю использовать библиотечную функцию, а не «изобретать колесо», насколько это возможно). Я искал документацию, но ничего не нашел.

Вы знаете, существует ли такой "сейф Elements.get(0)" в Jsoup?


person Regex Rookie    schedule 29.04.2011    source источник


Ответы (1)


elements.first() возвращает первый элемент из elements или null если пусто.

Также вы можете использовать elements.isEmpty(), чтобы проверить, соответствует ли что-либо ваш селектор.

Например, в зависимости от того, что вы пытаетесь сделать:

Element link = div.select("a").first();
if (link != null) {
  String href = link.attr("href");
  String text = link.text();
}
person Jonathan Hedley    schedule 29.04.2011
comment
Ух ты! Я собирался ответить себе elements.isEmpty() ? null : elements.get(0);, но твой вариант намного лучше. +1 :) - person Regex Rookie; 29.04.2011
comment
Более авторитетного ответа вы не получите;) (Джонатан - автор Jsoup) - person BalusC; 29.04.2011