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

2020年11月25日 59点热度 0条评论

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

这些片段可以是任何类型的HTML,因此我们必须清理内容,以使其不包含某些安全性问题标签(例如<script>等)。

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

我们需要更高级的规则,例如:

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

    到目前为止,我们已经完成了一些代码来处理此问题,但是我发现这很hacky。是否存在已知的库,标准或算法来处理此类问题?我不是XML解析/转换专家,我可以使用任何诸如XSLT,SAX或其他可以帮助我解决问题的方法。

    我正在寻找浏览器(JS)和JVM(Java或Scala)上的解决方案。关于如何实现这一点的任何想法?

    解决方案如下:

    也许Showdown.js可以帮助您? https://github.com/showdownjs/showdown