我有一个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。我可以用替换任务(将整个块放在属性标记和值中并不能真正起作用)来完成这项工作吗?或者有没有一种快速的方法可以用ant读取xml,删除一些节点并再次保存xml?
搜索并替换它不是一个选项,因为有多个值的子项,并且不是所有的子项都需要注释掉。
添加这样的属性也不是一个选项,因为IOC容器(Prana)正在解析xml。也许prana会忽略id="1",但它仍然很乱,从长远来看,我不喜欢乱。
如果您可以通过正则表达式确定要替换的内容,我建议您使用可选任务replaceregexp。这是医生:http://ant.apache.org/manual/Tasks/replaceregexp.html您可以调用它两次,一次用于开始标记,另一次用于结束标记。
替换的regexp可能有点麻烦,因为您说不想替换所有标记,但我认为这是最简单的方法。
另一种选择是创建一个自定义蚂蚁任务来做你想做的事情。
如果它是一个XML文件,那么您也可以调用XSLT转换