アキはフリーランスのプログラマーです >> Java >> Ant

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース

Ant カスタム FilterChain サンプル

■フィルターチェーン系

で使うフィルターのサンプルです。

現在、ソースコードのみの提供とします。

まだ十分なテストをしていないで問題があるかもしれません。

何かあれば教えていただければ幸いです。

StripTag

テキスト中のHTMLタグ部分のみ出力しません。非常にシンプルなコードです。きちんとするには、XMLParserを使うやり方を検討してください。

■ダウンロード(ソースコード)■ダウンロード(テストコード)

使用例

<target name="striphtml">
<property name="htmlfile" value="test.html"/>
<property name="newfile" value="new.txt"/>
<copy file="${htmlfile}" tofile="${newfile}">
<filterchain >
<filterreader classpath="bin" classname="org.jpn.xucker.ant.filter.StripTag"/>
</filterchain>
</copy>
</target>

LineNotContains(文字列を含まない行のみコピー)

LineContainsを一部修正したものです。

こちらは指定した文字列のいずれも含まないものを通します。


私はアクセスログの解析時、gifやpngなどを外しています。他にスマートなやり方がありそうな気がしたのですが思いあたりませんでした。


■ダウンロード(ソースコード)

使用例

<target name="logclean">
<typedef name="linenotcontains" classpath="bin" classname="org.jpn.xucker.ant.filter.LineNotContains"/>
<copy file="access_log" tofile="clean_log">
<filterchain>
<filterreader classpath="bin" classname="org.jpn.xucker.ant.filter.LineNotContains">
<param type="notcontains" value=".gif HTTP"/>
<param type="notcontains" value=".png HTTP"/>
<param type="notcontains" value=".jpg HTTP"/>
<param type="notcontains" value=".css HTTP"/>
<param type="notcontains" value="._vti_bin"/>
<param type="notcontains" value=".ico HTTP"/>
<param type="notcontains" value="/MSOffice/"/>
<param type="notcontains" value="XXXXX:+++"/>
</filterreader>
</filterchain>
</copy>
</target>

LineWhicheverContains(いずれかの文字列を含む行のみコピー)

LineContainsはparamすべて含まなければならないが、こちらはいずれか

■ダウンロード(ソースコード)


LineWhicheverNotContains(いずれかの文字列を含まない行のみコピー)

LineNotContainsはparam すべて含んでいない行だけど、こちらはいずれかの文字列が含んでいなければいい。

つまりすべて含んでいる行はのみコピーしない。

■ダウンロード(ソースコード)

BeforeLineContains(含む行が見つかる前までの行をコピー)

アクセスログを分割するのみどうでしょうか。

■ダウンロード(ソースコード)

AfterLineContains(含む行が見つかった以後の行をコピー)

アクセスログを分割するのにどうでしょうか。

■ダウンロード(ソースコード)


このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース