Jsoup: Safe Elements.get (0) - PullRequest
       16

Jsoup: Safe Elements.get (0)

2 голосов
/ 29 апреля 2011

Следующий фрагмент кода извлекает один и только один элемент, в частности элемент 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, если элементы пустые.Вместо этого он просто оставит строки пустыми.

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

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

1 Ответ

7 голосов
/ 29 апреля 2011

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

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

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

Element link = div.select("a").first();
if (link != null) {
  String href = link.attr("href");
  String text = link.text();
}
...