如何使用 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!
我关注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!