質問
Antでテキスト全体をコメントアウトする必要があるxmlファイルがあります。
このAntタスクがあります
<replace file="${src.dir}/Version.as"
token="@revisionPrana" value="${revision}"/>
単語の置換に使用しますが、私の場合は、次のようにブロック全体を置換する必要があります。
<value>
<object class="edumatic.backoffice.view.modules.NavigationModuleInfo">
<property name="url"
value="edumatic/backoffice/view/modules/support/ExamsNavigationModule.swf"/>
<property name="icon"
value="edumatic/backoffice/view/modules/support/assets/book.png" />
<property name="title" value="Assessments" />
<property name="pluginID" value="EXAM" />
</object>
</value>
<value>
<object class="edumatic.backoffice.view.modules.ContentModuleInfo">
<property name="url"
value="edumatic/backoffice/view/modules/support/ExamsContentModule.swf" />
<property name="pluginID" value="EXAM" />
</object>
</value>
中
<!--value>
<object class="edumatic.backoffice.view.modules.NavigationModuleInfo">
<property name="url"
value="edumatic/backoffice/view/modules/support/ExamsNavigationModule.swf"/>
<property name="icon"
value="edumatic/backoffice/view/modules/support/assets/book.png" />
<property name="title" value="Assessments" />
<property name="pluginID" value="EXAM" />
</object>
</value>
<value>
<object class="edumatic.backoffice.view.modules.ContentModuleInfo">
<property name="url"
value="edumatic/backoffice/view/modules/support/ExamsContentModule.swf" />
<property name="pluginID" value="EXAM" />
</object>
</value-->
つまり、基本的にはXMLのブロック全体をコメントアウトする必要があります。置換タスクを使用してこれを行うことはできますか(ブロック全体を属性トークンと値に入れることは実際には機能しません)?または、antでxmlを読み取り、いくつかのノードを削除して、xmlを再度保存する簡単な方法はありますか?
複数の値の子があり、すべてをコメントアウトする必要がないため、検索して置換することはオプションではありません。
XMLがIOCコンテナ(Prana)によって解析されているため、次のような属性を追加することもオプションではありません。多分pranaはid =&quot; 1&quot;を無視するでしょう。しかし、それはまだ厄介であり、長期的には厄介ではありません。
解決
正規表現を使用して置換対象を特定できる場合は、オプションのタスク replaceregexp を使用することをお勧めします。ドキュメントは次のとおりです。 http://ant.apache.org/manual/Tasks/replaceregexp。 html 開始タグ用と終了タグ用の2回呼び出すことができます。
を置き換えるための正規表現は、すべての タグを置き換えたくないと言うので、少し面倒な場合がありますが、これが最も簡単な方法だと思います。
別のオプションは、希望することを行うためにカスタムantタスクを作成することです。
他のヒント
XMLファイルの場合、XSLT変換を呼び出すこともできます