Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant、replaceregexp、match和replace匹配列表中的特定元素_Regex_Ant_Match - Fatal编程技术网

Ant、replaceregexp、match和replace匹配列表中的特定元素

Ant、replaceregexp、match和replace匹配列表中的特定元素,regex,ant,match,Regex,Ant,Match,在我的ant构建文件中,有一个任务需要替换XML的特定元素 以下是我试图修改的目标XML: <foo> <sub> <elem>name1</elem> </sub> <sub> <elem>name2</elem> </sub> <sub> <elem>name3</elem> </sub> </foo>

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

以下是我试图修改的目标XML:

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

名称1
姓名2
名字3
Ant构建任务:

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

上述任务的问题是所有标记都将被替换。但是,我只希望修改第二个元素,而不是第一个或第三个匹配项。(对于普通正则表达式,这一点非常简单。)

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

您应该将其用于与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>

replace部分还提供了
withXml/withFile/withBuffer

有关详细信息,请参阅xmltask和。

一些XPath要点。

谢谢。我以前见过这个,但直到你指出来,我才朝那个方向走。此外,我在手册中似乎找不到任何关于“withXml”或“withBuffer”的参考。只需转到并搜索“withXml”即可转到并搜索“withXml”