如何使用 JSoup 将标签和标签之间的文本提取到列表中

How to extract tags and text between tags to a list with JSoup

我关注html:

<div class="CustomClass">
    Hi!<br/>
    <br/>
    Bla Bla bla<br/>
    <br/>
    <a href...></a>
    bla bla bla
    <iframe...></iframe>
    Thank you!
</div>

我需要一个包含 div 的子项的列表,如下所示:

0->Hi!
2-><br/>
3->Bla Bla bla
4-><br/>
5-><a href...></a>
6->bla bla bla
7-><iframe...></iframe>
8->Thank you!

我尝试获取 div 元素的子元素,然后迭代子元素并将它们转换为 html,但是这个 returns 仅标记元素并忽略文本元素之间。在理想情况下,文本会被 p 标签包围,但事实并非如此 :S

如果我在 div 元素上使用 element.ownText 函数,那么我会得到没有标签的文本,我需要这两种东西,并且顺序正确:/

有办法实现吗?

谢谢!

您可以使用 childNodes() 获取 Node 的列表,这正是您所需要的:

Document doc = Jsoup.parse("<div class=\"CustomClass\">Hi!<br/><br/>Bla Bla bla<br/><br/><a href...></a>bla bla bla<iframe></iframe>Thank you!</div>");
Element div = doc.selectFirst(".CustomClass");
List<Node> childNodes = div.childNodes();
for (int i = 0; i < childNodes.size(); i++) {
    Node node = div.childNodes().get(i);
    System.out.println(i + " -> " + node);
}

输出:

0 -> 
Hi!
1 -> <br>
2 -> <br>
3 -> Bla Bla bla
4 -> <br>
5 -> <br>
6 -> <a href...></a>
7 -> bla bla bla
8 -> <iframe></iframe>
9 -> Thank you!