【问题标题】:JSOUP Deleting closing and/or opening divs onlyJSOUP 仅删除关闭和/或打开 div
【发布时间】:2016-01-28 16:32:42
【问题描述】:

您好,我在谷歌上搜索了几个小时,但找不到答案……(或 smt 接近它) 我想做的是,假设我有这个代码(非常简化):

<div id="one"><div id="two"><div id="three"></div></div></div>

我想要做的是删除特定数量的这些元素,假设其中 2 个。所以结果是:

<div id="one"><div id="two"><div id="three"></div>

或者我想删除这个开始元素(再次具体数量,让我们再说一遍)但不知道它们的全名(所以我们可以假设如果真名是 id="one_54486464" 我知道它的一个_ ... ) 所以删除后我得到了这个结果:

<div id="three"></div></div></div>

任何人都可以提出实现此结果的方法吗?它不必包含 JSOUP,更好。欢迎使用更简单或更有效的方法 :) (但我正在使用 JSOUP 解析文档以达到我所剩无几的地步) 我希望我能清楚地解释自己,如果您有任何问题,请询问...谢谢:)

编辑:我要删除的那些元素位于 HTML 文档的最后(所以什么都没有,它们后面没有任何东西,不是 body 标签 html 标签什么都没有......) 请保留该 HTML 文档在整个代码中会有很多,我只想在文档末尾删除特定数量...

对于开头的 div,这些 div 位于我的 HTML 文档的最开头,并且在它们之前没有任何内容...所以我需要从一开始就删除特定的数量,而不知道它们的特定 ID 只是它的开头。此外,这个 div 在文档中的某处也关闭了,我想保留在那里。

【问题讨论】:

    标签: java html parsing dom jsoup


    【解决方案1】:

    对于第一种情况,您可以获取元素的 html(使用 html() 方法)并在其上使用一些 String 方法来删​​除它的几个结束标记。

    例子:

    e.html().replaceAll("(((\\s|\n)+)?<\\/div>){2}$","");
    

    这将删除最后2个关闭div标签,要更改要删除的标签数量,只需更改大括号{n}之间的数字

    (这只是一个示例,可能不可靠,您应该使用其他一些String 方法来决定要丢弃哪些部分)

    对于第二种情况,您可以选择内部元素并为其添加一些额外的结束标签。

    例子:

    String s = e.select("#two").first().html() + "</div></div>";
    

    要选择 ID 以 String 开头的元素,您可以使用 e.select("div[id^=two]")

    您可以在how to select elements here找到更多详细信息

    【讨论】:

    • 您好,感谢您的回复。我忘了说我展示的那个例子只是片段,当你为“”写替换
      我正在替换 html 中的每个 div 不仅是我想要的那些......我也忘了说我
      我要删除的是 html 代码的最后(所以,它们后面什么都没有)...到第二个我想删除打开的 div 不关闭它们...我无法关闭,我需要它们消失 :)跨度>
  • @Pauli 对于第一个例子,html() 返回一个String,这意味着replace(...) 方法没有替换元素,它只是丢弃了"&lt;/div&gt;&lt;/div&gt;"String。跨度>
  • @Pauli 对于第二个示例,您不必丢弃开头的divs,您可以选择div 的内部元素并为其添加一些额外的结束标签。
  • 嗨,我想删除它们是出于其他我不想解释的原因,因为它太复杂而无法理解,我真的需要它们不要关闭,就像我说的那样会有很多
    不仅我想删除这个,所以我不能使用替换...我想要一些可以让我在页面末尾删除指定数量的
    的东西
  • 【解决方案2】:

    在 Titus 提出正则表达式之后,我决定编写正则表达式来删除打开的 div。 所以我将 Jsoup 文档转换为字符串,然后对字符串进行解析,然后再转换回 Jsoup 文档,这样我就可以使用 Jsoup 函数了。

    添加:我所做的是我正在解析两个页面并将其无缝连接到一个页面。所以没有丢失打开 div 或关闭...所以我的 HTML 代码保持没有错误,因此我能够将其转换回 Jsoup 文档而不会出现并发症。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2013-02-14
      • 2015-06-24
      相关资源
      最近更新 更多