JSoup解析垃圾邮件Freemarker标签

时间:2016-02-27 14:48:01

标签: java html jsoup freemarker

我正在使用JSoup更新一些服务器端HTML模板,其中包含一些Freemarker标记。 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()方法?

2 个答案:

答案 0 :(得分:2)

不,不幸的是,白名单功能仅适用于clean()方法,而不适用于解析器。因此,您无法轻松添加标签。

即使您使用xmlParser也不行,因为您的标记名称以#开头。

我看到的唯一解决方案是在解析之前转换模板。例如用正则表达式。

答案 1 :(得分:2)

有一种可能适合您的解决方法:FreeMarker有一种替代语法,您可以使用int soapResult = soap_ssl_client_context(soapPtr, SOAP_SSL_DEFAULT, // requires server to authenticate "client.pem", // client cert (+public key) to authenticate to server "password", // you need this when client.pem is encrypted NULL, // capath to certs, when used "cacert.pem", // should contain the server cert NULL); [代替]<,例如{{1} }}。可以使用>设置在FreeMarker配置中启用它。 (或者,如果您使用[#list things as thing]启动模板,它将强制切换到替代语法。)