2

次のコードスニペットは、1つだけの要素、具体的には最初の要素を抽出します。

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

これは、簡潔なものと比較すると非常に面倒なコードですlinks.get(0)が、重要な機能が1つあります。それは、Elementsが空の場合にifをスローしないことです。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 に答える