Вопрос

У меня есть 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.Могу ли я сделать это с помощью задачи замены (помещение всего блока в маркер атрибута и значение на самом деле не работает)?Или есть быстрый способ прочитать xml с помощью ant, удалить некоторые узлы и снова сохранить xml?

Поиск и замена его на не является вариантом, потому что существует несколько дочерних значений, и не все из них нужно закомментировать.

Добавление атрибута like также не является вариантом, поскольку xml анализируется контейнером IOC (Prana).Возможно, prana проигнорирует id ="1", но это все равно беспорядочно, а я не люблю беспорядок в долгосрочной перспективе.

Это было полезно?

Решение

Если вы можете определить, что должно быть заменено с помощью регулярного выражения, я рекомендую использовать необязательную задачу replaceregexp заменить.Вот док: http://ant.apache.org/manual/Tasks/replaceregexp.html Вы можете вызвать его дважды, один для начального тега, а другой для конечного тега.

Регулярное выражение для замены вашего может быть немного громоздким, поскольку вы говорите, что не хотите заменять все теги, но я думаю, что это самый простой способ.

Другим вариантом было бы создать пользовательскую задачу ant, чтобы делать то, что вы хотите.

Другие советы

Если это XML-файл, то вы также можете вызвать преобразование XSLT

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top