2008-10-23 49 views
4

我有一个xml文件,我需要用Ant来注释整个文本。用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)解析。也许prana会忽略id =“1”,但它仍然是混乱的,我不喜欢长期的混乱。

回答

8

如果您可以通过正则表达式识别要替换的内容,我推荐使用可选任务replaceregexp。这里是文档:http://ant.apache.org/manual/Tasks/replaceregexp.html 你可以调用它两次,一个用于开始标记,另一个用于结束标记。

更换正则表达式您可能有点麻烦,因为你说你不想更换所有标签,但我认为这是最简单的方法。

另一种选择是创建一个自定义的ant任务来执行你想要的任务。

+0

嗯,事实上,我已经搜查了Ant任务手册,发现这replaceregexp但不知道如何处理回车换行符或。将尝试。自定义蚂蚁任务会很好,但公司的时间就是金钱:-)。将在我的空闲时间做一些研究。谢谢。 – 2008-10-23 13:18:25

+0

管理使它与replaceregexp一起工作。在意识到需要s标志之前,必须搜索一会儿!谢谢! – 2008-10-23 14:17:50

3

如果它是一个XML文件,那么你也可以调用XSLT转换