Jsoup: eq (n) селектор - PullRequest
       15

Jsoup: eq (n) селектор

1 голос
/ 31 августа 2011

У меня есть страница test.htm:

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

Я хочу получить первый div с class = "partB".

Document doc=Jsoup.parse( new File("test.htm"), "utf-8" );
Elements select=doc.select( "div.partB:eq(0)" );
System.out.println( select.get( 0 ).html() );

Исключение запуска:

 Exception happens:
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:546)
    at java.util.ArrayList.get(ArrayList.java:321)
    at org.jsoup.select.Elements.get(Elements.java:501)
    at Test.main(Test.java:13)

Вместо этого я получил размер = 0 элементов.Любая помогает.Благодаря ~

1 Ответ

1 голос
/ 01 сентября 2011

Селектор eq(n) проверяет индекс родственного элемента, то есть количество от родительского элемента. Итак, в вашем примере ваш селектор ищет div с классом 'partB', и это первый дочерний элемент его родителя (body). Такой элемент не существует, поэтому вы получаете возврат нулевой длины.

Я предлагаю вам использовать:

Element div = doc.select("div.partB").first();

Который находит элементы div по классам, а затем выводит их с помощью средства доступа к списку Element.

...