如何使用JSoup移除HTML中两个不同标签之间的指定文本?
使用JSoup移除指定标签间及标签后的文本
我来给你说说怎么用JSoup搞定这个需求,核心就是精准定位目标标签,然后移除它们之间和之后的多余文本节点,同时保留标签本身和内部内容。直接上具体实现方案:
实现思路
- 解析目标HTML文档,定位到包含
<strong>和<em>的上下文元素; - 精准找到要保留的
<strong>和<em>标签; - 移除
<strong>与<em>之间的所有兄弟节点(这里是文本节点); - 移除
<em>之后的所有兄弟节点; - 输出处理后的HTML内容。
代码实现
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; public class JsoupTextCleanup { public static void main(String[] args) { // 你的目标HTML字符串 String html = "<div class=\"orcl6w2\"> <div class=\"orcl6w3\"> <table > <tbody> <tr> <td> <table> <tbody> <tr> <td> <center> <strong>As Published In </strong> </center> </td> </tr> </tbody> </table> <h2>DEVELOPER: PL/SQL Practices</h2> <hr /> <strong>Steven Feuerstein </strong>This has to be deleted <em>Oracle PL/SQL Programming</em>This has to be deleted too. </td></tr></tbody></table></div></div>"; // 1. 解析HTML文档 Document doc = Jsoup.parse(html); // 2. 定位目标<strong>元素(这里用内容匹配,你也可以根据层级/class调整选择器) Element targetStrong = doc.select("strong:contains(Steven Feuerstein)").first(); if (targetStrong == null) { System.out.println("未找到目标<strong>元素"); return; } // 3. 移除<strong>到<em>之间的所有节点 Node currentNode = targetStrong.nextSibling(); while (currentNode != null) { // 找到<em>元素就停止遍历 if (currentNode instanceof Element && ((Element) currentNode).tagName().equals("em")) { break; } // 先存下下一个节点,再删除当前节点 Node nextNode = currentNode.nextSibling(); currentNode.remove(); currentNode = nextNode; } // 4. 移除<em>之后的所有节点 if (currentNode != null) { Node afterEmNode = currentNode.nextSibling(); while (afterEmNode != null) { Node nextNode = afterEmNode.nextSibling(); afterEmNode.remove(); afterEmNode = nextNode; } } // 5. 输出处理后的HTML System.out.println(doc.html()); } }
关键说明
- 选择器定位:示例中用
strong:contains(Steven Feuerstein)精准匹配目标<strong>,如果你的HTML结构更复杂,可以结合父元素的class或层级(比如div.orcl6w3 strong)来避免匹配错误。 - 节点遍历:JSoup的
nextSibling()会返回所有类型的节点(文本、元素、注释等),所以我们通过判断节点类型来找到<em>元素,中途的非<em>节点全部移除。 - 鲁棒性处理:代码里加了
targetStrong == null的判断,避免找不到目标标签时出现空指针异常。
内容的提问来源于stack exchange,提问作者Tusar
相关产品推荐
相关产品推荐

