如何将HTML片段转换为另一个HTML片段

How to transform an HTML fragment to another HTML fragment?

本文关键字:片段 HTML 另一个 转换      更新时间:2023-09-26

我有一个contentEditable类型的浏览器编辑器,用户可以在其中复制/粘贴或选择要放入的html片段。

这些片段可以是任何类型的HTML,因此我们必须对内容进行净化,使其不包含一些安全问题标签(如<script>等)

我知道一些清理程序库允许一些白名单策略(比如JVM上的JSoup),但这些规则通常非常简单,比如说哪些标签/属性被列入白名单,而没有其他规则。

我们想要更先进的规则,如:

  • 定义要保留或不保留的内联样式
  • 将相对链接转换为绝对链接
  • 根据类别名称将一些标签列入黑名单或白名单
  • 根据URI模式允许一些URI属性(比如只允许链接到某个域)
  • 在某些情况下,我们希望被禁止的dom节点被它们的子节点"替换"(以删除格式化和html布局元素,但不释放列入黑名单的标签中的文本节点

到目前为止,我们已经做了一些代码来处理这个问题,但我觉得这很难处理。是否有已知的库、标准或算法来处理这些事情?我不是XML解析/转换专家,我可以使用任何东西,比如XSLT、SAX或其他可以帮助我解决问题的东西。

我正在寻找浏览器(JS)和JVM(Java或Scala)的解决方案。你知道如何做到这一点吗?

也许Showdown.js能帮你?https://github.com/showdownjs/showdown