【发布时间】:2021-07-08 15:20:48
【问题描述】:
我一直在一个项目中工作,用户需要功能来解析保存在数据库中的 HTML 数据。我使用 <div> 和 JSOUP 将值解析为 HTML,例如:- <b>"Test"</b> 。它可以正常显示 - "Test" 该特定 HTML 格式的文本。但是当标签内的文本被删除时,问题就出现了。例如,当我有尖括号 时,文本会从 JSOUP <b>"Test 1 s< a test test 1<,tasa>"</b>
我得到结果
" 测试 1 秒
其他文本被删除。我需要显示整个
"Test 1 s".
任何帮助将不胜感激。
这是我的代码
def html = URLDecoder.decode(testValue.getAt('Test').replaceAll("%(?![0-9a-fA-F]{2})", "%25"),"UTF-8")
Jsoup.clean(html, Whitelist.basic())
【问题讨论】:
-
要求并不完全清楚。你想如何处理像
<b>How should <foo>this</foo> behave</b>这样的事情? -
根据html规则
&lt;如果是文本而不是标签的开头,则必须表示为&lt; -
@JeffScottBrown 简而言之,我希望在 html 解析期间避免使用非 html 标签。如果未在白名单中提及,Jsoup 功能似乎正在删除任何出现的标签。如果在 jsoup 中有任何其他这样的属性,那就太好了,但是我找不到任何这样的方法,如果我得到任何这样的方法来解析唯一的 html 标签,避免使用尖括号等其他非 html 标签,那将非常有帮助.
-
@daggett 是的,但是使用正则表达式来替换所有此类事件似乎非常烦人和错误。
-
你想用 replaceAll 做什么?
标签: java grails groovy jsoup gsp