2016-02-27 43 views
0

我使用JSoup來更新一些服務器端HTML模板,其中有一些Freemarker標籤。 JSoup不承認Freemarker的標籤爲有效的HTML(不夠公平),並把它們轉換成><例如:JSoup解析垃圾Freemarker標籤

<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

不,不幸的是,白名單功能只適用於clean()方法,而不適用於解析器。所以你不能輕鬆添加你的標籤。

即使您使用xmlParser,它也不起作用,因爲您的標籤名稱以#開頭。

我看到的唯一解決方案是在解析之前轉換模板。例如與正則表達式。

2

有可能爲你工作解決方法:FreeMarker的有在您使用[],而不是<>,像[#list things as thing]替代語法。它可以在FreeMarker配置中使用tagSyntax設置啓用。 (或者,如果您使用[#ftl]開始模板,它將強制切換到替代語法。)