Ant에서 ReplaceRegExp 함수를 처음 사용하고 몇 가지 질문이 있습니다.Ant ReplaceRegExp Questions
여기가 나의 사용 사례입니다.
여러 개의 .xml 파일이 있는데, 특정한 방법으로 조작해야합니다. 여기
은 .XML 내용의 한 예입니다 :
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>29.0</apiVersion>
<packageVersions>
<majorNumber>1</majorNumber>
<minorNumber>1228</minorNumber>
<namespace>prefix1__FirstNamespace</namespace>
</packageVersions>
<packageVersions>
<majorNumber>2</majorNumber>
<minorNumber>4</minorNumber>
<namespace>prefix2__TheNextNamespace</namespace>
</packageVersions>
<packageVersions>
<majorNumber>7</majorNumber>
<minorNumber>542</minorNumber>
<namespace>prefix3__AnotherNamespace</namespace>
</packageVersions>
<status>Active</status>
</ApexClass>
어떻게 속성이 접두사 "prefix3"를 포함하는 경우 만의하여 & 속성을 업데이트 할 수 있습니다?
나는이 기능을 시도했습니다 , $에 의해 지정된 값 {correctMinorNumber}에 속성을 변경하는 희망 : 그것은에 prefix3__으로 (하나 개의 <packageVersion>
노드가 있었다 파일에 올바른 일을
<target name="setminorNumber">
<replaceregexp flags="gis"
match="<minorNumber>?(.*)</minorNumber>?(.+?)<namespace>prefix3__</namespace>"
byline="false"
>
<substitution expression="<minorNumber>${correctMinorNumber}</minorNumber> 		<namespace>prefix3__</namespace>"/>
<fileset dir="${sf.retrieveFolder}">
<include name="**/*.xml"/>
</fileset>
</replaceregexp>
</target>
네임 스페이스)이지만 여러 <packageVersion>
노드가 포함 된 파일에서는 모든 노드가 하나의 prefix3__ 노드로 바뀝니다. 난 와일드 카드를 사용하여 문제가 있다고 생각하지만 replaceregexp에 대한 정확한 해결책을 알기에는 충분하지 않습니다.
내가해야 할 일을 달성하기 위해 내가 할 수있는 것에 대한 아이디어가 있습니까?
도움을 주시면 감사하겠습니다.
고맙습니다. 매우 유망 해 보입니다. 하나의 질문입니다,이 작품은 디렉토리에있는 여러 .xml 파일입니까? 아니면 모든 파일을 반복하고 각각에 대해이 작업을 수행 할 수있는 방법이 있습니까? –
''은 하나의 호출로 여러 파일을 처리 할 수있는' '을 사용합니다 :' ' –
내가 이전에 찾은 것만으로도 도움이되었습니다. –