プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > FileDownload > Macro > Ex: Command > DeleteElement.NonNested

 
 Ex:DeleteElement.NonNestedコマンド
Download Top | Macro Top | Command | ExCommand  


 
HTMLソースコードからJavaScript部分を全て削除する場合などに使用するコマンドです。

 

Ex:DeleteElement.NonNestedコマンド書式


  Ex:DeleteElement.NonNested:   src=(source_string)   sPos=(start_position)   tag=(tag_name)   name=(attribute_name)   value=(attribute_value)   igC   mode=(matching_pattern)   Once O:text=str[(suffix_index)]  

src= : string, ソース文字列 (HTML, XML, etc)
sPos= : int, (source_string)内のエレメント検出開始位置 (省略可)
tag= : string, 検索するエレメントのタグ名 (form, script, など)
name= : string, tag=の開始タグ内に指定されているアトリビュート名 (省略可)
value= : string, name=で指定されているアトリビュート値 (省略可)
igC : 大文字小文字を無視して検索する場合に指定 (省略可)
mode= : string, アトリビュートの検索方法 (省略可)
Once : 最初の1回だけ削除する場合に指定 (省略した場合は全削除)
O:text= : string, 結果(編集済文字列)を設定する変数 (省略可)

ローカル文字列配列に結果を設定する場合は、str[ ] の部分が strl[ ] になります。

 

概要


src= で指定したソースの sPos= で指定した位置以降について、指定したエレメントを削除します。
このコマンドで削除するエレメントは、 開始タグ、終了タグで囲まれていて、 ネストしていない(タグが入れ子になっていない)ものでなければなりません。

削除するエレメントはタグの名前で指定します。
<script ...> の開始タグと、 </script> の終了タグで囲まれている scriptエレメント を削除するには、
  tag="script"
のように指定します。
コマンドに Once の指定がない場合は、全てのエレメントを削除します。

開始タグのアトリビュートで、削除対象を絞り込むことができます。
例えば、scriptエレメントのうち、開始タグで id="ads" が指定されているものだけを削除したい場合、
  tag="script" name="id" value="ads"
のように指定します。

 

mode指定 (アトリビュート値の検出モード)


開始タグ内のアトリビュート値で削除対象エレメントを絞り込む場合、 オプションパラメータ mode= の指定により、次の3種類の検出方法が選択できます。
省略時は mode="Equals" になります。

modeが Equals の場合

文字列(source_string)(start_position)位置以降から、 エレメント名が(tag_name)で、 開始タグ内に指定されたアトリビュート(attribute_name)の値が (attribute_value) と一致するエレメントを削除対象とします。
たとえば、idアトリビュートの値が main であるようなformエレメント
  <form id="main" class="mainA"> ~ </form>
を削除したい場合はコマンドパラメータで、
  mode="Equals" tag="form" name="id" value="main"
と指定します。

modeが StartsWith の場合

文字列(source_string)(start_position)位置以降から、 開始タグ内で指定されている (attribute_name)アトリビュート の値が (attribute_value) から開始される (tag_name)エレメント を削除します。
たとえば、idアトリビュートの値が ads_ で開始されるformエレメントを全て削除したい場合はコマンドパラメータで、
  mode="StartsWith" tag="form" name="id" value="ads_"
と指定します。この場合、
  <form id="ads_100" action="./adx.cgi"> ~ </form>
  <form id="ads_"> ~ </form>
といったformエレメントが削除されます。

modeが EndsWith の場合

文字列(source_string)(start_position)位置以降から、 エレメント名が(tag_name)で、アトリビュート(attribute_name)(attribute_value)終端するエレメントを削除します。

modeが Include の場合

文字列(source_string)(start_position)位置以降から、 エレメント名が(tag_name)で、アトリビュート(attribute_name)(attribute_value)含むエレメントを削除します。

 

タグ名とアトリビュート名のmode指定


コマンドパラメータtag=で指定するタグ名と、 name=で指定するアトリビュート名は、 常に大文字小文字の区別を無視して検索されます。
たとえばコマンドパラメータで、
  tag="A" name="cLasS" value="ads"
と指定しても、
  <a class="ads" href="http://www.ex.com">Click</a>
といった Aエレメント があれば、それを削除対象として検出することができます。

value=で指定するアトリビュート値の比較は、 igC のオプションが指定されていた場合は 大文字小文字の区別を無視して行われます。
指定の無い場合は、 大文字と小文字は区別して検索されます。

アトリビュート値(value=) の指定を省略した場合は、 タグ名が tag= で指定したもので、かつ、 name= で指定したアトリビュートを持つ最初のタグが検出されます。
たとえばコマンドパラメータで、
  tag="A" name="ID"
と指定した場合、
  <a id="test">ABCDEFG</a>
  <a ID="link">ABCDEFG</a>
といった idアトリビュートを持つAエレメント はすべて削除対象として検出されますが、
  <a idx="test">ABCDEFG</a>
  <a>ABCDEFG</a>
という Aエレメント は検出対象になりません。

アトリビュート値(value=)と、 アトリビュート名(name=)の 両方の指定を省略した場合は、 タグ名が tag= で指定したものである最初のタグを検出します。

 

記述例


次の例はこの Ex:DeleteElement.NonNestedコマンド を使わずに、 HTMLページ(文字列変数strl[0])から スクリプトを全て削除する例です。



この例では、script開始タグの検出を単純に <script の文字列検出で処理しているので、 scripta や scriptic といったタグがある場合に誤検出してしまいますが、ここでは考慮しないものとします (考慮する場合はもう少し複雑なコードになります)。
これと同じ処理を、Ex:DeleteElement.NonNestedコマンド を使えば 次のように1行で記述することができます。



Ex:DeleteElement.NonNestedコマンドでは、 scripta や scriptic といったタグを誤検出することはありません。

 

補足


このコマンドはマクロヴァージョン 20090412 以降のサポートです。

[BACK]
プロセルピナ