gpt4 book ai didi

java - 使用 Jsoup 解析嵌套 HTML 无序列表

转载 作者:行者123 更新时间:2023-11-30 04:05:23 24 4
gpt4 key购买 nike

我正在解析一个带有嵌套无序列表的 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 > eNode ),但是使用 grandParentNode.text() 方法,我还得到整个嵌套 <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 的 text() 类中的方法 Element 。问题是我不知道如何避免 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

关于java - 使用 Jsoup 解析嵌套 HTML 无序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com