当前位置: 首页 > 知识库问答 >
问题:

使用Jsoup在保留内部HTML的同时解析和删除锚标记

尚嘉勋
2023-03-14

我必须解析一些html并移除锚标记,但我需要保留锚标记的innerHTML

例如,如果我的html文本是:

String html = "<div> <p> some text <a href="#"> some link text </a> </p> </div>"

现在我可以解析上面的html并在jsoup中选择如下所示的标记,

Document doc = Jsoup.parse(inputHtml);

//this would give me all elements which have anchor tag
Elements elements = doc.select("a");

我可以通过,

element.remove()

但是它会从开始括号到结束括号删除完整的achor标记,并且内部html会丢失,如何才能保留只删除开始和结束标记的内部html。

另外,请注意:我知道有从元素中获取outerHTML()和innerHTML()的方法,但这些方法只给出了检索文本的方法,remove()方法删除标记的完整html。有没有什么方法可以让我只移除外部的标签而保留内部的HTML?

非常感谢你的帮助。

--拉杰什

共有1个答案

庄新翰
2023-03-14

使用unwrap,它保留内部html

doc.select("a").unwrap();

有关详细信息,请查看api-docs:
http://jsoup.org/apidocs/org/jsoup/select/elements.html#unwrap%28%29

 类似资料:
  • 问题内容: 我一直在使用JSoup解析歌词,到目前为止一直很棒,但是遇到了问题。 我可以用来返回所需节点的完整HTML,这样就保留了换行符: 但是,如您所见,保留HTML实体和标签具有不幸的副作用。 但是,如果使用,我可以获得更好的外观,并且没有标签和实体: 这有另一个不幸的副作用,即删除了换行符并压缩为单行。 在调用之前简单地从节点进行替换会产生相同的结果,而且该方法似乎将文本压缩到方法本身的一

  • 问题内容: 我想删除标签之间的所有内容。输入示例可能是 输入: 输出将是: 基本上,我必须先删除整个区块 谢谢, 问题答案: 您最好对找到的 所有 元素进行迭代。所以你可以保证 a。)所有元素都被删除并且 b。)如果没有元素,那么什么也做不了。 例: 编辑: (除了我的评论) 当简单的 null /范围检查 在这里足够时,请不要使用异常处理: 代替:

  • 我是jsoup的新手,在使用非HTML元素(脚本)时遇到了一些困难。我有以下HTML: 用于显示这一点的应用程序知道如何处理 和.语句。因此,当我简单地用jsoup解析文本时,<和>被编码,html被重新组织,所以它不能正确地执行或显示。例如: 我的最终目标是添加一些css和js包含,并修改几个元素属性。那真的不是问题,我已经解决了那么多了。问题是我不知道如何保留非HTML元素,并将格式与原始格式

  • 问题内容: 这是我的HTML来源 这是我获取内容的Java程序,它过滤HTML标记 是否有使用Jsoup而不是使用Java而不是Regex解析HTML内容的简便方法 有没有办法只获取所需的内容。所以在这里我只需要内容“项目2-222” 问题答案: 尝试使用jsoup轻松解析: 要了解更多信息,请访问Jsoup Docs

  • 我试图从这些div标签中获取文本,但是它们都不返回任何内容: HTML: 我想得到div类“消息”和h4标记和跨越“日期时间”中的文本,我试图: 和: 但是他们没有成功。

  • 什么是正确的方法来删除只有HTML标签(保留所有自定义/未知的标签)与JSOUP(不是正则表达式)? 预期输入: 预期产出: 我尝试使用白名单清洁剂。none(),但它也会删除自定义标记。 我也尝试过: 但是它也删除了自定义标签。 这个答案对我不好,因为自定义标记的数量是无限的。