使用jsoup删除外部标记和内部标记的最佳方法是什么

时间:2018-05-17 06:59:39

标签: java jsoup

我想从下面的html中删除外部的两个div标签和两个span标签。

<div class="c44 c44v0">
       <div class="c44w">
          <blockquote>
             <span class="c44-lquote">
                <!-- # -->
             </span>
             <em>Being able to seamlessly integrate</em> with those providers via real-time data feeds.
             <span class="c44-rquote">
                <!-- # -->
             </span>
          </blockquote>
          <div class="c44credit">Luke Kelly,<br /> Vice President of Finance, Carbon</div>
       </div>
    </div>

删除后应该看起来像

 <blockquote>
             <em>Being able to seamlessly integrate</em> with those providers via real-time data feeds.
          </blockquote>
          <div class="c44credit">Luke Kelly,<br /> Vice President of Finance, Carbon</div>

我尝试使用下面的代码

doc.select("div.c44 c44v0 > div.c44w").forEach(div -> {
                div.parent().replaceWith(new Element(Tag.valueOf("div"), "").attr("align", "center").html(div.html()));
            });

但是使用此代码我可以删除两个div标签,但我正在替换另一个div标签。有没有更好的方法可以完全删除两个div标签以及span标签....请帮助......

1 个答案:

答案 0 :(得分:1)

这应该可以胜任。

首先删除span标记:

    doc.select("span.c44-rquote").remove();

然后选择您要保留的元素:

    Elements childs = doc.select("div.c44w > *");

删除带孩子的div:

    doc.select("div.c44.c44v0").remove();

然后再添加要保留在原始div所在位置的元素:

    for(Element e : childs) {
        doc.select("body").first().appendChild(e);
    }