nom
nom

Reputation: 115

ant replaceregexp xml newline

I'm trying to change an xml element value from "true" to "false" using ANT replaceregexp task but am having difficulties matching across a new line. The relevant part of the XML node in question:

<validationRules>
    <fullName>CAReversaApprovallLockdown</fullName>
    <active>true</active>

In my text editor (sublime), I'm able to use the following regex to find/replace but I can't figure out how to replicate this in ANT replaceregexp:

/fullname>\n        <active>true

I can't figure out the correct syntax to match the combination of the newline and the spacing afterwards. The spacing after the newline is always the same, if that makes things easier.

Looking at https://ant.apache.org/manual/Tasks/replaceregexp.html I've tried various combinations of ^ and $ with m flag, \s+ for spaces etc but just can't hit the right combo....any ideas?

My current progress is below but no luck unfortunately...

<target name="deactivate_val_rules">
    <echo message="deactivating validation rules..." />
    <replaceregexp match="/fullname&gt;\r\n\s+&lt;active&gt;true" flags="gim" byline="false">
        <substitution expression="/fullname&gt;\r\n        &lt;active&gt;false"/>
        <fileset dir="src\objects" includes="Claim_Approvals__c.object"/>
    </replaceregexp>
</target>

Upvotes: 2

Views: 1865

Answers (2)

nom
nom

Reputation: 115

Got it - the following gave the correct result:

<target name="deactivate_val_rules">
    <echo message="deactivating workflows..." />
    <replaceregexp match="/fullname&gt;\r\n\s+&lt;active&gt;true" flags="gis" byline="false">
        <substitution expression="/fullname&gt;${line.separator}        &lt;active&gt;false"/>
        <fileset dir="src\objects" includes="Claim_Approvals__c.object"/>
    </replaceregexp>
</target>

The output viewed via diff is:

  -  <fullName>the_name</fullName>
  -  <active>true</active>
  +  <fullName>the_name</fullname>
  +  <active>false</active>

Upvotes: 2

Sami
Sami

Reputation: 564

To Use replaceregexp you need to define the value to be changed as reference.

For Example:

<validationRules>
    <fullName>CAReversaApprovallLockdown</fullName>
    <active>true</active>

Ant:

<target name = "deactivate_val_rules">
    <echo message="deactivating validation rules..." />
    <replaceregexp file="${FILE_LOACTION}/FILE_NAME.FILE_EXT" match="true" replace="false" />   
</target>

Upvotes: 0

Related Questions