簡體   English   中英

使用Jsoup解析嵌套的HTML無序列表

[英]Parsing nested HTML unordered lists with Jsoup

我正在解析帶有嵌套無序列表的HTML文件,這是一個示例:

<ul>
    <li class="category_x">xyz abc
        <ul>
            <li>foo 123 bar</li>
            <li>456 bar foo</li>
        </ul>
    </li>
    <li class="category_x">aaa bbb ccc
        <ul>
            <li>xxx yyy zzz</li>
            <li>123 abc 456</li>
        </ul>
    </li>
</ul>

我對關系li > ul > li (將其視為Element類型的Jsoup對象: grandParentNode > parentNode > eNodegrandParentNode.text() ,但是使用方法grandParentNode.text()我也得到了整個嵌套<ul>的文本<ul>列表(包含eNode.text() )。

    // getting the triplets
    Elements triplets = doc.select("li > ul > li");

    // print the triplet
    for (Element eNode : triplets)
    {
        Element parentNode = eNode.parent();
        Element grandParentNode = parentNode.parent();

        System.out.println("Current node: " + eNode.text());
        System.out.println("Grand parent: " + grandParentNode.text());
    }

輸出為:

Current node: foo 123 bar
Grand parent: xyz abc foo 123 bar 456 bar foo
Current node: 456 bar foo
Grand parent: xyz abc foo 123 bar 456 bar foo
Current node: xxx yyy zzz
Grand parent: aaa bbb ccc xxx yyy zzz 123 abc 456
Current node: 123 abc 456
Grand parent: aaa bbb ccc xxx yyy zzz 123 abc 456

我希望它是:

Current node: foo 123 bar
Grand parent: xyz abc
Current node: 456 bar foo
Grand parent: xyz abc
Current node: xxx yyy zzz
Grand parent: aaa bbb ccc
Current node: 123 abc 456
Grand parent: aaa bbb ccc

看一下Jsoup文檔,看來我需要修改HTML才能使這些字符串包含在諸如value=""屬性之類的東西中,但是我無法修改HTML ...最重要的是,所有這些<li class="category_x">在每個節點上重復使用相同的值,而不是樹的“ li葉子”,因此它們在過濾數據方面並沒有真正的幫助。

我已經嘗試過諸如doc.select("li:lt(1) > ul > li"); 但它不起作用,問題在於HTML的結構以及我如何使用Jsoup的Element類中的方法text() 問題是我不知道如何避免text()

任何想法?

謝謝

使用ownText()方法僅選擇元素直接擁有的文本,而忽略任何子元素的文本。

因此更改此行:

System.out.println("Grand parent: " + grandParentNode.text());

System.out.println("Grand parent: " + grandParentNode.ownText());

現在,輸出將顯示:

Current node: foo 123 bar
Grand parent: xyz abc
Current node: 456 bar foo
Grand parent: xyz abc
Current node: xxx yyy zzz
Grand parent: aaa bbb ccc
Current node: 123 abc 456
Grand parent: aaa bbb ccc

暫無
暫無

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

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