Применение преобразования XDT к сложному типу XML - PullRequest
0 голосов
/ 14 июля 2020

У меня есть приложение Service Fabri c, которое развертывается в нескольких средах, каждая из которых определяется элементом Application xml, который является сложным типом. В этом элементе Application находится список параметров, и я хотел бы применить к этим параметрам преобразование XDT.

Целевой объект xml выглядит примерно так:

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SimFabric" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="Parameter1" Value="" key="key1"/>
    <Parameter Name="Parameter2" Value="" key="key2"/>
  </Parameters>
</Application>

И Интернет . *. config, который я хочу вставить, принимает форму:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <configSections>
    <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
  </configSections>
  <appSettings>
    <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="key1" value="value1" />
    <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="key2" value="value2" />
  </appSettings>
</configuration>

Можно ли использовать преобразование XDT, чтобы значения из второго файла были помещены в первый?

1 Ответ

0 голосов
/ 15 июля 2020

Преобразования XDT работают для каждого XML файла. Вы можете проверить это здесь

Источник:

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        Name="fabric:/SimFabric" xmlns="http://schemas.microsoft.com/2011/01/fabric">
          <Parameters>
            <Parameter Name="Parameter1" Value="" />
            <Parameter Name="Parameter2" Value="" />
          </Parameters>
</Application>

Преобразование XDT:

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SimFabric"  xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns="http://schemas.microsoft.com/2011/01/fabric">
 
  <Parameters>
    <Parameter xdt:Transform="Replace" xdt:Locator="Match(Name)" Name="Parameter1" Value="Value1" />
    <Parameter xdt:Transform="Replace" xdt:Locator="Match(Name)" Name="Parameter2" Value="Value2" />
  </Parameters>

</Application>

Результат:

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SimFabric" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="Parameter1" Value="Value1" />
    <Parameter Name="Parameter2" Value="Value2" />
  </Parameters>
</Application>
...