2011-04-29 4 views
2

코드의 다음 코드는 오직 하나 개의 요소, 특히 요소 추출 :Jsoup : 안전 Elements.get (0)

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에 있는지 여부를 알고 계십니까?

답변

7

elements.first()은 요소에서 첫 번째 요소를 반환하고 비어 있으면 null을 반환합니다.

또한 elements.isEmpty()을 사용하여 선택자와 일치하는 항목이 있는지 확인할 수 있습니다.

예를 들어, 당신이 뭘 하려는지에 따라 :

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

와우! 나는'elements.isEmpty()? null : elements.get (0);'하지만 네가 너무 좋아. +1 :) –

+0

당신은 답을 얻을 수 없다. (Jonathan은 Jsoup의 저자 임) – BalusC