У меня есть XML-файл, в котором мне нужно закомментировать весь текст с помощью Ant.
Вот эта задача 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?
Поиск и замена на не вариант, потому что есть несколько дочерних значений, и не все из них нужно закомментировать.
Добавление такого атрибута не является вариантом, потому что xml анализируется контейнером IOC (Prana). Возможно, прана проигнорирует id = "1", но это все равно беспорядок, и я не люблю беспорядок в долгосрочной перспективе.
Если вы можете определить, что нужно заменить, с помощью регулярного выражения, я рекомендую использовать необязательную задачу replaceregexp. Вот документ: http://ant.apache.org/manual/Tasks/replaceregexp.html Вы можете вызвать его дважды, один для начального тега, а другой для конечного тега.
The regexp for replacing your can be a bit cumbersome, since you say you do not want to replace all теги, но я думаю, что это самый простой способ.
Другой вариант - создать настраиваемую задачу муравья, чтобы делать то, что вы хотите.
Удалось заставить работать с replaceregexp. Пришлось немного поискать, прежде чем понял, что нужен флаг s! Спасибо!
Если это файл XML, вы также можете вызвать преобразование XSLT
В самом деле, не думал об этом (+ факт, что я ничего не знаю о XSLT ...).
Ну, действительно, я просмотрел руководство по задачам ant и нашел это replaceregexp, но задумался, как работать с возвратом каретки или переводом строки. Попробую это. Пользовательская задача с муравьями была бы замечательной, но для компании время - деньги :-). В свободное время поработаю над этим. Спасибо.