【问题标题】:Ant, replaceregexp, match and replace specific element in the list of matchesAnt,replaceregexp,匹配和替换匹配列表中的特定元素
【发布时间】:2014-02-24 04:46:35
【问题描述】:

在我的 ant 构建文件中,我有一个任务需要替换 XML 的特定元素。

这是我要修改的目标 XML:

<foo>
 <sub>
  <elem>name1</elem>
 </sub>
 <sub>
  <elem>name2</elem>
 </sub>
 <sub>
  <elem>name3</elem>
 </sub>
</foo>

Ant 构建任务:

<replaceregexp file="myfoo.xml"
      match="&lt;elem&gt;(.*)elem&gt;"
      replace="&lt;elem&gt;${replace_only_second_match}elem&gt;"
      byline="true"
/>

上述任务的问题是所有标签都会被替换。但是,我只想修改第二个元素,而不是第一个或第三个匹配项。 (这样的事情用普通的正则表达式很容易。)

不知道如何使用 Ant 的正则表达式。这是我需要有关如何最好地解决此问题的帮助/建议的地方。

【问题讨论】:

标签: regex ant match


【解决方案1】:

您应该将xmltask 用于与 xml 相关的任务,对于您的问题,请像这样使用它:

就地修改文件

<xmltask source="whatever.xml" dest="whatever.xml">
  <replace path="//sub[2]/elem/text()" withText="newname2"/>
</xmltask>

创建新文件

<xmltask source="whatever.xml" dest="newfile.xml">
  <replace path="//sub[2]/elem/text()" withText="newname2"/>
</xmltask>

替换部分还提供withXml / withFile / withBuffer
有关详细信息,请参阅 xmltask manualtutorial
一些 XPath 基础知识here

【讨论】:

  • 谢谢。我以前见过这个,但在你指出之前没有朝那个方向走。此外,我似乎在手册中找不到任何对“withXml”或“withBuffer”的引用。
  • 只需转到oopsconsultancy.com/software/xmltask 并搜索“withXml”
猜你喜欢
  • 2011-12-21
  • 2014-07-30
  • 2019-05-31
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2023-02-12
相关资源
最近更新 更多