Sostituzione di più righe di testo con Ant
Domanda
Ho un file XML dove devo commentare un intero pezzo di testo con Ant.
C'è questo compito di formica
<replace file="${src.dir}/Version.as"
token="@revisionPrana" value="${revision}"/>
che uso per sostituire le parole, ma nel mio caso ho bisogno di sostituire un intero blocco come questo:
<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>
In
<!--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-->
Quindi, in sostanza, devo commentare un intero blocco di XML. Posso farlo con un'attività di sostituzione (mettendo l'intero blocco nel token dell'attributo e il valore non funziona davvero)? Oppure c'è un modo rapido per leggere nel file XML con la formica ed eliminare alcuni nodi e salvare nuovamente il file XML?
Cercare e sostituirlo con non è un'opzione perché ci sono più figli di valore e non tutti devono essere commentati.
L'aggiunta di un attributo come non è un'opzione perché l'xml viene analizzato da un contenitore IOC (Prana). Forse prana ignorerà id = " 1 " ma è ancora disordinato, e non mi piace disordinato a lungo termine.
Soluzione
Se riesci a identificare ciò che deve essere sostituito tramite un'espressione regolare, ti consiglio di utilizzare l'attività facoltativa replaceregexp . Ecco il documento: http://ant.apache.org/manual/Tasks/replaceregexp. html Puoi chiamarlo due volte, uno per il tag iniziale e l'altro per il tag finale.
Il regexp per sostituire il tuo può essere un po 'ingombrante, dal momento che dici di non voler sostituire tutti i tag , ma penso che questo sia il modo più semplice.
Un'altra opzione sarebbe quella di creare un'attività di formica personalizzata per fare ciò che vuoi.
Altri suggerimenti
Se si tratta di un file XML, è possibile anche chiamare una trasformazione XSLT