Substituindo várias linhas de texto com Ant
Pergunta
Eu tenho um arquivo xml onde eu preciso comentar uma peça inteira de texto com Ant.
Há essa tarefa Ant
<replace file="${src.dir}/Version.as"
token="@revisionPrana" value="${revision}"/>
que eu uso para substituir palavras, mas no meu caso eu precise substituir um bloco inteiro assim:
<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>
Em
<!--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-->
Então, basicamente eu preciso comentar um bloco inteiro de XML. Posso fazer isso com uma tarefa substituir (colocando todo o bloco no atributo token e valor realmente não funciona)? Ou há uma maneira rápida de ler no xml com formiga e excluir alguns nós e salvar o XML novamente?
Procurar e substituí-la não é uma opção porque existem vários filhos valor e nem todos eles precisam ser comentadas.
Como adicionar um atributo como não é uma opção porque o xml está sendo analisado por um recipiente COI (Prana). Talvez prana irá ignorar o id = "1", mas bagunçada ainda iss, e eu não gosto de bagunça no longo prazo.
Solução
Se você pode identificar o que deve ser substituída por uma expressão regular, eu recomendo usar a tarefa opcional replaceregexp . Aqui está o doc: http://ant.apache.org/manual/Tasks/replaceregexp. html Você pode chamá-lo duas vezes, uma para a marca de início e outro para a marca de fim.
A expressão regular para substituir o seu pode ser um pouco complicado, uma vez que você diz que não quer substituir todo marcas, mas acho que esta é a maneira mais fácil.
Outra opção seria a criação de uma tarefa formiga personalizado para fazer o que quiser.
Outras dicas
Se for um arquivo XML, então você poderia também chamar transformar um XSLT