2017-09-25 4 views
1

나는 jsoup를 사용하여 html 파일의 강력한 태그에서 데이터를 검색하는 방법은 무엇입니까?</p> <pre><code>Name: ABC ID No.: XXXXX Status: Active Class: 5 Category: A Marks: 500 </code></pre> <p>방법 jsoup 또는 다른 방법으로 사용하여이 데이터를 얻을 수 :

<div class="bs-example"> 
    <div class="panel panel-primary"> 
    <div class="panel-heading"> 
     <h3 class="panel-title">ABC</h3> 
    </div> 
    <div class="panel-body"> 
     <div class="slimScroller" style="height:280px; position: relative;" data-rail-visible="1" data-always-visible="1"> 
     <strong>Name:</strong> 
     <a href="https://ABC"> </a><br /> 
     <strong>ID No:</strong> XXXXX<br /> 
     <strong>Status:</strong> ACTIVE<br /> 
     <strong>Class:</strong> 5<br /> 
     <strong>Category:</strong> A<br /> 
     <strong>Marks:</strong> 500<br /> 
     </div> 
    </div> 
    </div> 
</div> 

같은 일부 HTML 데이터 내가 (여러 학생 데이터)로 출력을 원하는가? 도와주세요.

답변

0

Element.nextElementSibling() 또는/및 Element.nextSibling()을 사용하여 필요한 출력을 얻을 수 있습니다.

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class Exam { 
    public static void main(String[] args) { 
    String html = "<div class=\"bs-example\">" + 
        " <div class=\"panel panel-primary\">" + 
        " <div class=\"panel-heading\">" + 
        "  <h3 class=\"panel-title\">ABC</h3>" + 
        " </div>" + 
        " <div class=\"panel-body\">" + 
        "  <div class=\"slimScroller\" style=\"height:280px; position: relative;\" data-rail-visible=\"1\" data-always-visible=\"1\">" + 
        "  <strong>Name:</strong>" + 
        "  <a href=\"https://ABC\"> </a><br />" + 
        "  <strong>ID No:</strong> XXXXX<br />" + 
        "  <strong>Status:</strong> ACTIVE<br />" + 
        "  <strong>Class:</strong> 5<br />" + 
        "  <strong>Category:</strong> A<br />" + 
        "  <strong>Marks:</strong> 500<br />" + 
        "  </div>" + 
        " </div>" + 
        " </div>" + 
        "</div>"; 

    Document doc = Jsoup.parse(html); 
    Elements eles = doc.select("div.slimScroller strong"); 
    for(Element e :eles) 
    System.out.println(e.text() + 
         (e.nextElementSibling().tagName().equals("a")? 
         e.nextElementSibling().attr("href").replace("https://", ""): 
         e.nextSibling().toString())); 
    } 
} 
+0

안녕 에리트리아는, 정말 도움을 주셔서 감사합니다 ...하지만이에 널 포인터 예외가 발생합니다 (e.nextElementSibling(). tagName(). equals ("a")? –

+0

원래 html 스 니펫이나 @anurag가 편집 한 스 니펫으로 시도한 적이 있습니까? 처음 게시 된 스 니펫에 누락 된 것이있을 수 있습니다. 코드에 포함되어있어 NPE를 얻지 못했습니다 – Eritrean

+0

원본 스 니펫에서이 "A"태그는 다음과 같습니다 : 이름 :ABC

0

출력을 제공해야 다음 코드는 a 태그는 방법을 설명하는 코멘트를 기반으로 지정된 :

private static void printStudentInfo(Document document){ 
    Elements students = document.select("div.slimScroller strong"); 

    for(Element student : students){ 
     System.out.print(student.text()); 

     System.out.println(student.nextElementSibling().tagName().equals("a") ? 
       student.nextElementSibling().text() : student.nextSibling().toString()); 
    } 
}