【问题标题】:How to extract tags and text between tags to a list with JSoup如何使用 JSoup 将标签之间的标签和文本提取到列表中
【发布时间】:2020-01-04 19:50:14
【问题描述】:

我有以下 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,但这仅返回标记元素并忽略元素之间的文本。在理想情况下,文本会被 p 标签包围,但情况并非如此:S

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

有没有办法做到这一点?

谢谢!

【问题讨论】:

    标签: jsoup


    【解决方案1】:

    您可以使用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!
    
    

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多