java - 用jsoup解析html并去掉标签 block

标签 java jsoup

我想删除标签之间的所有内容。一个示例输入可能是

输入:

<body>
  start
  <div>
    delete from below
    <div class="XYZ">
      first div having this class
      <div>
        waste
      </div>
      <div class="XYZ">
        second div having this class
      </div>
      waste
    </div>
    delete till above
  </div>
  <div>
    this will also remain
  </div>
  end
</body>

输出将是:

<body>
  start
  <div>
    delete from below
    delete till above
  </div>
  <div>
    this will also remain
  </div>
  end
</body>

基本上,我必须删除第一次出现的整个 block <div class="XYZ">

谢谢,

最佳答案

您最好遍历找到的所有 元素。所以你可以确定

  • a.) 所有元素都被移除,并且
  • b.) 如果没有元素,则什么都不做。

示例:

Document doc = ...

for( Element element : doc.select("div.XYZ") )
{
    element.remove();
}

编辑:

(我评论的补充)

当一个简单的空/范围检查在这里就足够时,不要使用异常处理:

doc.select("div.XYZ").first().remove();

改为:

Elements divs = doc.select("div.XYZ");

if( !divs.isEmpty() )
{
    /*
     * Here it's safe to call 'first()' since there at least one element.
     */
}

关于java - 用jsoup解析html并去掉标签 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795796/

相关文章:

java - 将单个元素添加到结构数组java中时出错

java - 具有重写方法的 NullPointerException

java - 无需凭据即可使用 Google 云端硬盘下载公共(public)文件

java - 与 Firefox 和其他浏览器相比,Jsoup 获得不同的 html

java - 在 Jsoup 中再次将原始 html 字符串拆分为行

java - jsoup : How to search for date text from a webpage

java - 缩短执行时间

java - Etat HTTP 500 - NullPointerException

java - JSOUP - 仅从 html 中选择一些文本

web-scraping - 如何在jsoup中加载文档之前获取http内容长度