Java 在第一级提取jsoup中的元素,无递归

Java 在第一级提取jsoup中的元素,无递归,java,html,jsoup,Java,Html,Jsoup,我有这个html。我需要“李”。我使用.select(“li”),但在每个“li”中,可能还有另一个“li”,但我不感兴趣。我只想要第一级的“李”。 可能吗 <div id="id"> <ul> <li> <div> <ul> <li> ........ </li>

我有这个html。我需要“李”。我使用.select(“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>

  • . . .
确定它是:

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
文档
进行遍历

参考:


更简单-使用CSS选择器,如

Document.select('div#id > ul > li')

当您使用“>”时,您会告诉您所需要的只是给定DOM元素的第一级子元素。看看这段代码——您可以简单地将其作为groovy脚本运行。

您必须使用CSS选择器
来指定您只需要直接子级

这可以相对于元素进行,如以下示例所示:

Element div = Jsoup.parseBodyFragment("<div id="id">...</div>").body();
div.select(">div>ul>li"); // this will return all li under the first ul
或者以绝对方式(cf@Szymon回答):


谢谢,但是如果我有,例如,一个“ul”,它会忽略。也就是说,我只想使用您可以用来导航DOM的“li”。最终,您不能忽视/不解释
ul
在@davida中的事实
ul.select(">li");
Document.select('div#id > ul > li')