xmlpoke à Nant - comment mettre à jour toutes les instances de chaîne trouvée

StackOverflow https://stackoverflow.com/questions/2774353

  •  03-10-2019
  •  | 
  •  

Question

Salut J'utilise XPath dans mon script de compilation Nant changer certaines variables de configuration entre le développement et mes autres environnements.

J'ai pris la syntaxe de cet exemple:

L'exemple ressemble à ceci:

<xmlpoke
    file="config01/app.config"
    xpath="/configuration/appSettings/add[@key='AppName']/@value"
    value="TradeMonster">
</xmlpoke>

Ce que je voudrais quelque chose de similaire à ce pour chercher mes chaînes de connexion et de trouver toutes les instances de « localhost \ SqlExpress » et il suffit de les changer juste « localhost »

Est-ce possible?

Était-ce utile?

La solution

Toying avec un script sale Quick'n ici ....

Si vous êtes sûr, il n'y a qu'un seul élément connectionstring dans chaque fichier que vous pouvez accomplir cela avec une combinaison de xmlpeek et xmlpoke. Modification de la chaîne se fait plus facile avec une C #, en utilisant donc une tâche de script pour faire une recherche regex et remplacer:

 <script language="C#" prefix="custom" >
      <code>
        <![CDATA[
          [Function("fix")]
          public static string Fix(string input) {
              return Regex.Replace(input, @"localhost\\\w+", "localhost");
          }
        ]]>
      </code>
  </script>

<!-- Get the existing connection string -->
<xmlpeek
    file="config01/app.config"
    xpath="/configuration/connectionStrings/add[@contains(@connectionString,'localhost\')]/@connectionString"
    property="connectionstring">
</xmlpeek>

<!-- Write back the modified connection string -->
<xmlpoke
    file="config01/app.config"
    xpath="/configuration/connectionStrings/add[@contains(@connectionString,'localhost\')]/@connectionString"
    value="${custom::fix(connectionstring)}">
</xmlpoke>

Autres conseils

XPath sélectionne uniquement les nœuds, il ne peut pas changer les nœuds .

Une façon d'accomplir les changements nécessaires est d'effectuer une transformation XSLT sur le document XML.

Pour ce faire, vous devez fournir le document XML et de préciser exactement quels de ses noeuds de texte doivent être modifiés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top