2013-06-08 8 views
8

Ecco la parte del codice HTML (semplificato per la domanda):jsoup: Come selezionare i nodi principali, che hanno i bambini che soddisfano una condizione

<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> 

Quello che voglio ottenere è il vettore contenente gli ID di le aste per le quali viene visualizzata l'immagine 2.png (id = 4672 in questo caso). Come costruire la query Selector per ottenere questo?

http://jsoup.org/apidocs/org/jsoup/select/Selector.html - Qui posso solo trovare il modo di selezionare i bambini, non i genitori ...

Qualsiasi aiuto apprezzato, tra cui l'utilizzo di altre librerie. Ho provato Jsoup perché sembrava essere il più popolare.

risposta

10

È possibile utilizzare il metodo parent():

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. 

    // ... 
} 
Problemi correlati