我有这个HTML。我需要" li"。我使用.select(" li"),但在每个" li"中,可能还有另一个" li"但我不感兴趣。我只想要" li"在第一级。 有可能吗?
<div id="id">
<ul>
<li>
<div>
<ul>
<li> ........ </li>
</ul>
</div>
</li>
<li> ........ </li>
<li> ........ </li>
<li> ........ </li>
<li> ........ </li>
<li> ........ </li>
.
.
.
</ul>
</div>
答案 0 :(得分:3)
它更简单 - 使用CSS选择器,如
Document.select('div#id > ul > li')
使用&#34;&gt;&#34;你告诉所有你想要的是给定DOM元素的第一级孩子。看看这段代码 - https://gist.github.com/wololock/621a42546cac6dd0daa2你可以简单地将它作为一个groovy脚本运行。
答案 1 :(得分:2)
当然是:
Elements documentElements = document.getElementsByTag("id"); //get the div
Element theList= documentElements.get(0); //get the unordered list
Element listItem = theList.child(0); //this is the first list item in that unordered list
这个答案假设您已经加载了HTML并准备好JSoup Document
进行遍历
参考:
答案 2 :(得分:1)
您必须使用CSS选择器>
来指定您只想要直接子项。
这可以相对完成,如下例所示:
Element div = Jsoup.parseBodyFragment("<div id="id">...</div>").body();
div.select(">div>ul>li"); // this will return all li under the first ul
从ul元素中检索所有第一级li
:
ul.select(">li");
或以绝对方式(参见@Szymon回答):
Document.select('div#id > ul > li')