1

データベースからHTMLメールコンテンツを取得しています。htmlには次のような文字列が含まれています:

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

表示する前に削除したいもの。

私はColdfusion9とjSoupを使用してhtmlを解析しています。jSoupは、htmlに含まれていた<script>コンテンツを削除するのに最適でした。

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

本当の「タグ」ではないので、jSoupで<%を選択する方法がわかりません。

ありがとう、ゲイリー

4

1 に答える 1

2

jSoup を使用して、<%@ ... %>それを含む HTML を解析すると、変換さ&lt;%@ ... %&gt;れてテキストとして扱われます。

これは単純なテキストであるため、jSoup がそれを取得したり、他のテキストとは異なる方法で処理したりすることはできません。

これらのマーカーが単純なルールに従うプレースホルダー/トークンであると仮定すると (つまり、ネストがない、マーカーの外側に「%」が含まれないなど)、次のような正規表現でそれらを削除できます。

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

jsoup.parse(emailHTML)(文字列を再びオブジェクトに戻すために使用したい場合とそうでない場合があります。)

もちろん、これらのプレースホルダーが何らかの理由で存在する場合は、単にそれらを削除するよりも複雑なことを行う必要がある場合があります。HTML が含まれている可能性がある場合は、jSoup を呼び出してスクリプト タグを削除する前にそれらを処理する必要があるかどうかを検討する必要があります。 /等。

于 2013-03-04T13:02:14.500 に答える