Вставить в конфигурацию, если дочерний узел отсутствует - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь использовать Microsoft.Web.XmlTransform.dll для обновления XML-документа. Мне нужно вставить новый элемент сборки, если элемент с дочерним элементом не имеет соответствующего имени атрибута.

Transform:

<config>
  <assembly xdt:Transform="Insert" xdt:Locator="Condition(./assembly/file/@name!='qux.dll')>
    <file name='qux.dll>
  </assembly>
</config>

Исходная конфигурация:

<config>
  <assembly>
    <file name='foo.dll>
  </assembly>
  <assembly>
    <file name='bar.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
</config>

Выход:

<config>
  <assembly>
    <file name='foo.dll>
  </assembly>
  <assembly>
    <file name='bar.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
</config>

Ожидаемый результат:

<config>
  <assembly>
    <file name='foo.dll>
  </assembly>
  <assembly>
    <file name='bar.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
</config>

Я предполагаю, что xdt: Locator = "Условие (./ assembly/file/@name!='qux.dll ') неверно, но я не могу заставить его работать должным образом.

1 Ответ

0 голосов
/ 13 мая 2019

треснуло:

<config>
  <assembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(file/@name='qux.dll')>
    <file name='qux.dll>
  </assembly>
</config>
...