首页 > 解决方案 > 如何使用 jsoup 用 span 标签替换特定的 div 标签

问题描述

<div class="c45 c45v0">
    <p><span>J</span>oseph DeSimone made a bold move back</p>
</div>

我想<div class="c45 c45v0"><span class="c6 c77">.

<span class="c6 c77">
    <p><span>J</span>oseph DeSimone made a bold move back</p>
</span>

我尝试使用下面的代码来替换,但我无法替换它。谁能帮我解决这个问题。

if (elements.select("div.c45.c45v0").size()>0) {
    if (!elements.select("div.c45.c45v0").isEmpty()) {
        elements.tagName("span.c6.c77");
    }   
}

标签: javajsoup

解决方案


基于您从中选择elements的对象的事实,它看起来不是搜索元素,但只包含一个因此操作它没有多大意义。第二件事是您不想通过. 您需要通过(对于新类)和(对于以前的类)或通过系列来设置标签,但属性。div.c45.c45v0tagNametagNameclass.attr("class", "c6 c77")addClassremoveClass

演示:

String html =
        "<div class=\"c45 c45v0\">\n" +
        "    <p><span>J</span>oseph DeSimone made a bold move back</p>\n" +
        "</div>";

Document doc = Jsoup.parse(html);

//here 'elements' contain only div.c45.c45v0 elements *from* entire document (doc)
Elements elements = doc.select("div.c45.c45v0");
System.out.println(elements);

//now we can manipulate those selected elements
elements.tagName("span");
elements.attr("class", "c6 c77");
System.out.println("---------------");
System.out.println(elements);

输出:

<div class="c45 c45v0"> 
 <p><span>J</span>oseph DeSimone made a bold move back</p> 
</div>
---------------
<span class="c6 c77"> <p><span>J</span>oseph DeSimone made a bold move back</p> </span>

推荐阅读