[英]JSoup parse trashing Freemarker tags
我正在使用JSoup更新其中包含一些Freemarker标记的某些服务器端HTML模板。 JSoup无法将Freemarker标记识别为有效的HTML(足够公平),并将其转换为>
和<
例如:
<div class="row">
<#list things as thing>
</#list>
</div>
转换为:
<div class="row">
<#list things as thing>
</#list>
</div>
当我调用Document doc = Jsoup.parse( theHtml );
我知道JSoup有一个白名单,大概可以在其中添加<#list>
和其他Freemarker标记,但是我看不到将更新的白名单传递给parse()
方法的方法吗?
不,不幸的是,白名单功能仅适用于clean()方法,不适用于解析器。 因此,您无法轻松添加标签。
即使您使用xmlParser,它也将不起作用,因为您的标签名称以#
开头。
我看到的唯一解决方案是在解析之前转换模板。 例如带有正则表达式。
有一种解决方法可能对您有用:FreeMarker提供了另一种语法,您可以在其中使用[
和]
代替<
和>
,例如[#list things as thing]
。 可以使用tagSyntax
设置在FreeMarker配置中启用它。 (或者,如果您以[#ftl]
开头的模板,则它将强制切换为其他语法。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.