Добавить субэлементы в файл конфигурации (XML) с помощью powershell - PullRequest
0 голосов
/ 28 мая 2020

я схожу с ума. Мне нужно изменить этот XML файл в PowerShell

<system.diagnostics>
  <trace autoflush="attr1" indentsize="attr2">
    <listeners>
      <add name="attr1" type="attr2" initializeData="attr3" />
      <remove name="Default" />
    </listeners>
  </trace>
  <switches>
    <add name="attr1" value="attr2" /> 
  </switches>
</system.diagnostics>

Мне нужно добавить новый элемент после «удалить»: я попытался использовать следующий код

$fileXML = 'C:\Users\XXXX\file.config'
$contentXML = New-Object XML
$contentXML.Load($fileXML)
$elementXML = $contentXML.SelectSingleNode("//listeners")
$childElementsXML = $contentXML.CreateElement("set")
$elementXML.AppendChild($childElementsXML)
$contentXML.DocumentElement.AppendChild($elementXML)
$contentXML.Save($fileXML)

но он перемещает элемент «слушатели» на тот же уровень «трассировки». Что я делаю не так?

<system.diagnostics>
  <trace autoflush="attr1" indentsize="attr2">
  </trace>
  <switches>
    <add name="attr1" value="attr2" />
  </switches>
  <listeners>
    <add name="attr1" type="attr2" initializeData="attr3" />
    <remove name="Default" />
    <set />
  </listeners>
</system.diagnostics>

заранее спасибо за помощь, ребята

1 Ответ

0 голосов
/ 28 мая 2020

Удалите эту строку:

$contentXML.DocumentElement.AppendChild($elementXML)

$elementXML (узел <listeners>) уже там, где он должен быть :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...