我正在使用JSoup更新一些服务器端HTML模板,其中包含一些Freemarker标记。 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()
方法?
答案 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]
启动模板,它将强制切换到替代语法。)