2016-02-27 2 views
0

Я использую JSoup для обновления некоторых HTML-шаблонов на стороне сервера, в которых есть теги Freemarker. JSoup не распознает теги Freemarker как действительный HTML (вполне справедливо), и преобразует их в > и < Например:JSoup parse trashing теги 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], он будет принудительно переключиться на альтернативный синтаксис.)

Смежные вопросы