簡體   English   中英

如何在jsoup中獲取元素的第一級子元素

[英]How to get first-level children of an element in jsoup

在jsoup中, Element.children()返回Element的所有子項(后代)。 但是,我想要Element的一級孩子(直接孩子)。

我可以使用哪種方法?

Element.children()僅返回直接子項。 既然你把它們綁在樹上,它們也有孩子。

如果您需要沒有底層樹結構的直接子元素,則需要按如下方式創建它們

public static void main(String... args) {

    Document document = Jsoup
            .parse("<div><ul><li>11</li><li>22</li></ul><p>ppp<span>sp</span</p></div>");

    Element div = document.select("div").first();
    Elements divChildren = div.children();

    Elements detachedDivChildren = new Elements();
    for (Element elem : divChildren) {
        Element detachedChild = new Element(Tag.valueOf(elem.tagName()),
                elem.baseUri(), elem.attributes().clone());
        detachedDivChildren.add(detachedChild);
    }

    System.out.println(divChildren.size());
    for (Element elem : divChildren) {
        System.out.println(elem.tagName());
    }

    System.out.println("\ndivChildren content: \n" + divChildren);

    System.out.println("\ndetachedDivChildren content: \n"
            + detachedDivChildren);
}

產量

2
ul
p

divChildren content: 
<ul>
 <li>11</li>
 <li>22</li>
</ul>
<p>ppp<span>sp</span></p>

detachedDivChildren content: 
<ul></ul>
<p></p>

這應該為您提供父節點的直接后代所需的列表:

Elements firstLevelChildElements = doc.select("parent-tag > *");

或者您也可以嘗試檢索父元素,通過child(int index)獲取第一個子節點,然后嘗試通過siblingElements()檢索此子節點的兄弟siblingElements()

這將為您提供排除使用過的孩子的第一級孩子的列表,但是您必須在外部添加孩子。

Elements firstLevelChildElements = doc.child(0).siblingElements();

您始終可以將ELEMENT.child(index)與索引一起使用,您可以選擇所需的子項。

在這里,您可以獲得一級孩子的價值

 Element addDetails = doc.select("div.container > div.main-content > div.clearfix > div.col_7.post-info > ul.no-bullet").first();
    Elements divChildren = addDetails.children();
    for (Element elem : divChildren) {
       System.out.println(elem.text());
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM