Java 使用Jsoup解析嵌套的HTML无序列表
我正在解析一个带有嵌套无序列表的HTML文件,下面是一个示例:Java 使用Jsoup解析嵌套的HTML无序列表,java,html-parsing,html-lists,jsoup,Java,Html Parsing,Html Lists,Jsoup,我正在解析一个带有嵌套无序列表的HTML文件,下面是一个示例: <ul> <li class="category_x">xyz abc <ul> <li>foo 123 bar</li> <li>456 bar foo</li> </ul> </li> <li class="cat
<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>
输出为:
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
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
leaf”的节点上以相同的值到处重复,因此它们在过滤数据方面并没有真正的帮助
我已经尝试过像doc.select(“li:lt(1)>ul>li”)
但它不起作用,问题是HTML的结构以及如何使用Jsoup的元素类中的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