2

以下代码片段提取了一个且仅一个元素,特别是第一个元素:

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

与简洁相比,这确实是一个繁琐的代码,links.get(0)但它有一个重要的特点:如果 Elements 为空,它不会抛出异常。IndexOutOfBoundException相反,它只会将字符串留空。

我可以将它封装到我自己的函数中,但我很难相信 Jsoup 还没有这样的函数(我更喜欢使用库函数而不是尽可能地“重新发明轮子”)。我搜索了文档,但找不到任何文档。

你知道Elements.get(0)Jsoup中是否存在这样的“安全”吗?

4

1 回答 1

7

elements.first()返回元素中的第一个元素,如果为空,则返回 null。

您也可以使用elements.isEmpty()来检查是否有任何内容与您的选择器匹配。

例如,取决于您要执行的操作:

Element link = div.select("a").first();
if (link != null) {
  String href = link.attr("href");
  String text = link.text();
}
于 2011-04-29T03:07:23.043 回答