java - 如何使用 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");
}
}
解决方案
基于您从中选择elements
的对象的事实,它看起来不是搜索的元素,但只包含一个因此操作它没有多大意义。第二件事是您不想通过. 您需要通过(对于新类)和(对于以前的类)或通过系列来设置标签,但属性。div.c45.c45v0
tagName
tagName
class
.attr("class", "c6 c77")
addClass
removeClass
演示:
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>
推荐阅读
- openshift - Openshift OKD 过多的日志记录
- c++ - 为什么向量化使用浮点数比使用双精度数更有效?
- ocaml - Opam 可以安装最新的软件包并告诉'Already up-to-date'?
- c - C 中是否有一个函数可以在 Linux 上获取当前进程的虚拟运行时?
- php - 计算按列分组的模式
- c - 为什么我的 const 值会改变它的值?(C)
- reactjs - 我想在反应中显示加载
- python - Phython panda 添加一个新列,其中包含一些行的条目
- qt - QML TreeView 仅获取第二个孩子的点击事件
- php - 如何使我的路线与控制器一起使用?