如何使用Jsoup将class为c45 c45v0的div标签替换为span标签?
解决Jsoup替换div标签为指定class的span标签问题
我看到你尝试用Jsoup替换<div class="c45 c45v0">为<span class="c6 c77">,但现有代码没达到预期效果,问题主要出在这两点:
- 直接对
elements调用tagName()是修改原集合的标签,而非选中的目标div元素 tagName()方法只接受纯标签名,不能带class后缀(比如"span.c6.c77"是错误用法)
正确实现步骤
我们需要遍历选中的每个目标div,分别修改标签名和class属性:
// 先定位所有目标div元素 Elements targetDivs = elements.select("div.c45.c45v0"); // 遍历每个div进行替换操作 for (Element div : targetDivs) { // 1. 将标签名从div改为span div.tagName("span"); // 2. 替换class属性为目标值 div.attr("class", "c6 c77"); }
代码解释
- 选择目标元素:通过
select("div.c45.c45v0")精准定位需要替换的div - 遍历修改:因为可能存在多个匹配元素,所以循环处理每个div
- 修改标签名:
tagName("span")会保留元素的所有子节点(也就是你例子里的<p>标签) - 替换class:
attr("class", "c6 c77")会直接覆盖原有的class属性,达到预期的class值
执行这段代码后,你就能得到想要的结果:
<span class="c6 c77"> <p><span>J</span>oseph DeSimone made a bold move back</p> </span>
内容的提问来源于stack exchange,提问作者Tusar
相关产品推荐
相关产品推荐

