これにはjSoupを使用します。これは実際には HTML パーサーですが、XML に対しても使用できます。
XML を解析したら、属性による選択と削除は次のように簡単です...
.select('[zip=22222]').remove()
...しかし、ここに jSoup 1.7.2 を使用した完全な例があります (以前のバージョンでは API が若干異なる場合があります):
<cfsavecontent variable="XmlText">
<TERMINALS>
<terminal location="some random location" terminal="25" zip="11111" />
<terminal location="some other location" terminal="26" zip="22222" />
<terminal location="some more location" terminal="22" zip="33333" />
</TERMINALS>
</cfsavecontent>
<cfscript>
jSoup = createObject('java','org.jsoup.Jsoup');
Parser = createObject('java','org.jsoup.parser.Parser');
Dom = jSoup.parse( XmlText , '' , Parser.xmlParser() );
Dom.select('[zip=22222]').remove();
</cfscript>
<cfdump var=#Dom.outerHtml()# />
そのコードが機能するためには、CF が jSoup クラスについて知る必要があるため、JAR ファイルを参照できる必要があります。これは、次の 4 つの異なる方法で実現できます。
オプション 1:
jSoup jar を CF の lib ディレクトリ (例:{cf10}/cfusion/webroot/WEB-INF/lib
または) に配置し、CF{cf9}/webroot/WEB-INF/lib
を再起動します。詳細情報.
オプション 2:
jSoup jar をローカル ディレクトリに配置しThis.JavaSettings
、Application.cfc でセットアップします。この機能は、CF 10 および Railo 4.0 で追加されました。
オプション 3:
jSoup jar をローカル ディレクトリに配置し、JavaLoader を使用してロードします (上記と同様ですが、どのバージョンでも機能します)。
次に、上記の 2 つの createObject 行を次のように置き換えます。
jl = new javaloader.JavaLoader([expandPath('./jsoup-1.7.2.jar')]);
jSoup = jl.create('org.jsoup.Jsoup');
Parser = jl.create('org.jsoup.parser.Parser');
(jarファイルがスクリプトと同じディレクトリにあると仮定)
オプション 4: Railo と OpenBD の場合、上記のオプションが機能します。または、 createObject呼び出し
の 3 番目の引数として JAR ファイルへのパスを参照するだけでもかまいません。