簡體   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