Pregunta

Tengo un archivo xml donde necesito comentar todo un texto con Ant.

Hay una tarea de hormiga

<replace file="${src.dir}/Version.as" 
         token="@revisionPrana" value="${revision}"/>

que uso para reemplazar palabras, pero en mi caso necesito reemplazar un bloque completo como este:

<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>

En

<!--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-->

Entonces, básicamente necesito comentar un bloque completo de XML. ¿Puedo hacer esto con una tarea de reemplazo (poner el bloque completo en el token de atributo y el valor realmente no funciona)? ¿O hay una forma rápida de leer el xml con ant y eliminar algunos nodos y volver a guardar el xml?

Buscarlo y reemplazarlo no es una opción porque hay hijos de valor múltiple y no es necesario comentarlos todos.

Agregar un atributo como tampoco es una opción porque el xml está siendo analizado por un contenedor IOC (Prana). Tal vez prana ignore el id = " 1 " pero aún así es desordenado, y no me gustan los desordenados a largo plazo.

¿Fue útil?

Solución

Si puede identificar qué se va a reemplazar a través de una expresión regular, recomiendo usar la tarea opcional replaceeregexp . Aquí está el documento: http://ant.apache.org/manual/Tasks/replaceregexp. html Puede llamarlo dos veces, una para la etiqueta de inicio y otra para la etiqueta de finalización.

La expresión regular para reemplazar tus puede ser un poco incómoda, ya que dices que no quieres reemplazar todas las etiquetas , pero creo que esta es la forma más fácil.

Otra opción sería crear una tarea ant personalizada para hacer lo que quieras.

Otros consejos

Si es un archivo XML, también puede llamar a una transformación XSLT

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top