繁体   English   中英

JSoup解析垃圾Freemarker标签

[英]JSoup parse trashing Freemarker tags

我正在使用JSoup更新其中包含一些Freemarker标记的某些服务器端HTML模板。 JSoup无法将Freemarker标记识别为有效的HTML(足够公平),并将其转换为> < 例如:

<div class="row">
<#list things as thing> 
</#list>
</div>

转换为:

<div class="row">
&lt;#list things as thing&gt;
&lt;/#list&gt;
</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM