我有一个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的元素。 任何帮助。感谢〜
答案 0 :(得分:1)
eq(n)
选择器检查元素的兄弟索引,即元素父级的计数。所以在你的例子中,你的选择器正在寻找一个带有'partB'类的div,它是它的父(body)的第一个子元素。不存在这样的元素,这就是为什么你获得零长度返回。
我建议您使用:
Element div = doc.select("div.partB").first();
使用Element的列表访问器,按类查找div,然后winnows。