gpt4 book ai didi

java - 使用白名单清理 html 并在白名单元素上保留一些属性

转载 作者:行者123 更新时间:2023-11-30 06:27:16 25 4
gpt4 key购买 nike

下面的代码片段在 scala 中使用 Jsoup 允许我清除任何 html 标签中的字符串,除了那些明确在白名单中的标签:

val whiteList = Whitelist.none().addTags(
"b", "br", "ul", "ol", "li", "em", "h4", "h5", "hr", "pre", "sub", "sup"
)
Jsoup.clean("some unsafe text", whiteList)

该过程不加区别地从文本内的标签中删除所有 css 样式和元素属性,这是一般情况所需的。但我想要的是进程保留白名单的 block 元素上的 direction css 属性或可能的 dir 属性。

我对用 java 编写的答案没有问题。

最佳答案

我通过将不安全的文本传递给自定义递归方法来解决这个问题,如下所示:

val whiteList = List(
"b", "br", "ul", "ol", "li", "em", "h4", "h5", "hr", "pre", "sub", "sup"
)
def clean(raw: String): String = {
def traverseAndClean(elem: Element): Unit = {
if (!whiteList.contains(elem.tagName())) {
elem.remove()
} else {
elem.attributes().forEach { attr =>
val key = attr.getKey
if (key != "dir") elem.removeAttr(key)
}
elem.children().iterator().forEachRemaining(traverseAndClean)
}
}
val doc = Jsoup.parseBodyFragment(raw)
doc.body().children().iterator().forEachRemaining(traverseAndClean)
doc.body().html()
}

clean("my unsafe text")

关于java - 使用白名单清理 html 并在白名单元素上保留一些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46920161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com