2013-06-08 21 views
8

tutaj jest częścią HTML (uproszczone dla pytanie):jsoup: Jak wybrać węzły nadrzędne, które mają dzieci spełniających warunek

<a href="/auctions?id=4672" class="auction sec"> 
<div class="progress"> 
    <div class="guarantee"> 
    <img src="/img/ico/2.png" /> 
    </div> 
</div> </a> 
<a href="/auctions?id=4670" class="auction"> 
<div class="progress"> 
    <div class="guarantee"> 
    <img src="/img/ico/1.png" /> 
    </div> 
</div> </a> 

Co chcę uzyskać jest wektor zawierający identyfikatory aukcje, dla których wyświetlany jest obraz 2.png (id = 4672 w tym przypadku). Jak skonstruować kwerendę Selector w celu uzyskania tego?

http://jsoup.org/apidocs/org/jsoup/select/Selector.html - Tutaj mogę tylko znaleźć sposób, aby wybrać dzieci, a nie rodziców ...

Każda pomoc mile widziany, w tym korzystanie z innych bibliotek. Próbowałem Jsoup, ponieważ wydawało się najbardziej popularne.

Odpowiedz

10

Można użyć parent() metody:

final String html = "<a href=\"/auctions?id=4672\" class=\"auction sec\"> \n" 
     + " <div class=\"progress\"> \n" 
     + " <div class=\"guarantee\"> \n" 
     + " <img src=\"/img/ico/2.png\" /> \n" 
     + " </div> \n" 
     + " </div> </a>\n" 
     + "<a href=\"/auctions?id=4670\" class=\"auction\"> \n" 
     + " <div class=\"progress\"> \n" 
     + " <div class=\"guarantee\"> \n" 
     + " <img src=\"/img/ico/1.png\" /> \n" 
     + " </div> \n" 
     + " </div> </a>"; 

Document doc = Jsoup.parse(html); 

for(Element element : doc.select("img")) // Select all 'img' tags 
{ 
    Element divGuarantee = element.parent(); // Get parent element of 'img' 
    Element divProgress = divGuarantee.parent(); // Get parent of parent etc. 

    // ... 
}