2016-05-18 5 views
2

я имею проблемы с выбором конкретного ребенка по заказу, для Exemple, глядя на этот HTML код:как получить конкретный DIV с помощью jsoup

<html> 
    <body> 
     <div class="partA"> 
     1 
     </div> 
     <div class="partB"> 
     2 
     </div> 
     <div class="partC"> 
     3 
     </div> 
     <div class="partB"> 
     <div>1</div> 
     <div>2</div> 
     <div>3</div> 
     <div>4</div> 
     <div class = "sublassB"> 5 </div> 
     </div> 

     <div class="partD"> 
     5 
     </div> 
    </body> 
    </html> 

я хочу с помощью jsoup, получить четвертый DIV, например (body/div [4]/div [5]), а затем получить имя класса четвертого div.

Я использовал: eq (n), но это не дало мне отброшенный результат. Есть ли другой путь ? благодарит заранее :).

ответ

1

Получение элементов с именем класса всегда предпочтительнее, но все же, если вы хотите идти по индексу нумерации Вы можете использовать ниже код, вы должны знать точный индекс вы хотите, чтобы принести хотя

Document doc = Jsoup.connect("http://www.codeinventory.com").get(); 
Elements body= doc.select("body").get(0); 
Elements div = body.select("div").get(3).select("div").get(4); // here just append select("div").get(n) fi you know exact nesting and div number you want 

System.out.println(div.attr("class")) // this will give you classname 
+0

, но в случае длинной дорожки, такой как – kivok94

+0

/div [3]/div [2]/div/div [1]/div/div [2]/div/div [1]/div/div [1 ]/div [18]/div [2] – kivok94

+0

Обновленный ответ! :) –

1

Вот как писать путь body/div[4]/div[5] как селектор CSS:

body > div:nth-child(4) > div:nth-child(5) 

Если вы используете длинный путь, не содержащий только Div или иногда другой тег, просто создать строку на лету и передать его в Jsoup.

+1

okey stephan, это тоже хорошее решение, спасибо – kivok94

Смежные вопросы