Jsoup:eq(n)选择器

时间:2011-08-31 10:23:29

标签: selector jsoup

我有一个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>

我想用class =“partB”获得第一个div。

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)

相反,我得到了一个size = 0的元素。 任何帮助。感谢〜

1 个答案:

答案 0 :(得分:1)

eq(n)选择器检查元素的兄弟索引,即元素父级的计数。所以在你的例子中,你的选择器正在寻找一个带有'partB'类的div,它是它的父(body)的第一个子元素。不存在这样的元素,这就是为什么你获得零长度返回。

我建议您使用:

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

使用Element的列表访问器,按类查找div,然后winnows。