【问题标题】:Replacing multiple lines of text with Ant用 Ant 替换多行文本
【发布时间】:2010-09-18 18:41:01
【问题描述】:

我有一个 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?

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

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

【问题讨论】:

    标签: xml ant replace comments


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗯,确实,我搜索了 ant 任务手册并找到了这个 replaceregexp,但想知道如何处理回车或换行。会尝试的。定制蚂蚁任务会很棒,但在公司时间就是金钱:-)。我会在空闲时间对此进行一些研发。谢谢。
    • 设法使其与 replaceregexp 一起使用。在意识到需要 s 标志之前必须搜索一段时间!谢谢!
    【解决方案2】:

    如果是 XML 文件,也可以调用 XSLT 转换

    【讨论】:

    • 确实,没想到这一点(+ 事实上我对 XSLT 一无所知...)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2018-07-18
    • 2022-10-06
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多