使用给定的HTML代码
<code><html>
<body>
<form>
<p>test</p>
</form>
<script></script>
<form>
<p>test2</p>
</form>
</body>
</html></code>
我无法使用此选择器语法搜索第二个表单标记:
Elements result = doc.select("form:eq(1)");
我什么也得不回来。如果我从源中删除脚本标记,则select按预期工作,然后我返回test2-paragraph。 为什么eq(1)在这里没有按预期工作?
此致
答案 0 :(得分:0)
关于jsoup选择器的文档将:eq(n)
伪选择器定义为匹配&#34;其兄弟索引等于n&#34;的元素。兄弟姐妹指数是父母子女中元素的指数。
在你的例子中:
<html>
<body>
<form></form> <!-- Sibling Index: 0 -->
<script></script> <!-- Sibling Index: 1 -->
<form></form> <!-- Sibling Index: 2 -->
</body>
</html>
因此,要使用选择器获取第二个表单:
doc.select("form:eq(2)");
否则eq(int)
方法会按预期执行:
doc.select("form").eq(1);
选择器的行为与jQuery不同,其中eq(n)
伪选择器匹配先前匹配元素集合中的第n个元素。
参考文献: