2013-03-04 2 views
1

Я вытаскиваю html-адрес электронной почты из базы данных. В html содержатся строки:Как удалить текст, например <% @ include view = "MirrorPage"%> с помощью jSoup

<%@ include view="MirrorPage" %> and <%= stagingArea.techField.label %> 

, которые я хотел бы удалить перед отображением.

Я использую Coldfusion 9 и jSoup для анализа html. jSoup отлично справился с удалением < скрипт > содержимое, которое было в html.

<cfset emailHTML=jsoup.parse(detail["html"]) /> 
<cfset emailHTML.select("script").remove() /> 

Я просто неясна о том, как выбрать <% с jSoup, так как он не является истинным «тег».

Спасибо, Гэри

ответ

2

При использовании jSoup для разбора HTML, который содержит <%@ ... %> он преобразуется в &lt;%@ ... %&gt; и обрабатывается как текст.

Поскольку это простой текст, для jSoup нет возможности поднять его или рассматривать его иначе, чем другой текст.

Предполагая, что эти маркеры являются заполнителей/токены, которые следуют простым правилам (т.е. нет вложенности, они не будут содержать «%» за пределами их маркеров и т.д.), вы можете удалить их с регулярным выражением, как это:

<cfset emailHTML = rereplace(emailHTML.html() ,'&lt;%[@=][^%]+%&gt;','','all') /> 

(вы можете или не хотите, чтобы затем использовать jsoup.parse(emailHTML), чтобы получить строку обратно в объект снова.)

конечно, если эти заполнители есть по причине, возможно, придется сделать что-то более сложное, чем просто удаление их - и если они могут включать HTML, то вам нужно подумать, должны ли они обрабатываться be fore jSoup вызывается для удаления тегов сценариев/и т. д.

+0

Спасибо, Питер, подумав об этом, я подумал, что регулярное выражение будет лучшим инструментом для удаления этих строк. В приложении электронной почты они используются для создания контента. Я вытаскиваю html из базы данных только для показа, чтобы они не были нужны. – garyv

+0

Иногда самое сложное в регулярном выражении работает, если это правильный инструмент или нет. :) Возможно, стоит заменить непустую строку (например, '...') - в случае, если в результате возникают разногласия отображения из-за чего-то вроде пустого td - зависит от аудитории, на которую я думаю. –