xmlpoke в Nant - как обновить все экземпляры найденной строки

Привет я использую Xpath в своем сценарии сборки Nant для замены некоторых переменных конфигурации между разработкой и моими другими средами.

Я взял синтаксис от этого примера:

Пример похож на это:

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

То, что я хотел бы, является чем-то подобным этому, чтобы искать мои строки подключения и найти все экземпляры "localhost\SqlExpress" и просто изменить их на просто "localhost"

Действительно ли это возможно?

5
задан Peter Lillevold 5 May 2010 в 18:01
поделиться

2 ответа

Игрушка с быстрым и грязным сценарием здесь....

Если вы уверены, что в каждом файле есть только один элемент connectionstring, вы можете сделать это с помощью комбинации xmlpeek и xmlpoke. Модифицировать строку проще всего с помощью языка C#, поэтому, используя задачу сценария, выполните поиск и замену regex:

 <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>
4
ответ дан 15 December 2019 в 00:53
поделиться

XPath только выбирает узлы, он не может изменять узлы

Один из способов выполнить необходимые изменения - выполнить XSLT-преобразование XML-документа.

Для того чтобы это произошло, необходимо предоставить XML-документ и точно указать, какие из его текстовых узлов должны быть изменены.

0
ответ дан 15 December 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: