4

我有一个 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 块。我可以通过替换任务来做到这一点(将整个块放在属性标记和值中并不起作用)吗?还是有一种快速的方法可以用 ant 读取 xml 并删除一些节点并再次保存 xml?

搜索并替换它不是一种选择,因为有多个值子项,并非所有子项都需要注释掉。

添加类似的属性也不是一个选项,因为 xml 正在由 IOC 容器 (Prana) 解析。也许 prana 会忽略 id="1" 但它仍然很乱,从长远来看我不喜欢凌乱。

4

2 回答 2

8

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

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

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

于 2008-10-23T13:13:09.390 回答
3

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

于 2008-10-24T23:15:29.317 回答