У меня была похожая проблема, и я пошел по той же дороге, что и вы, пытаясь пройтись по дереву XML, чтобы найти узел, который мне нужно было изменить.Это была пара ключ / значение, определяющая URI для соединения с веб-службой.URI по умолчанию указывал на localhost, например:
<add key="ProcessorService" value="https://localhost/Processor/ProcessorService.asmx" />
... и мне нужно было указать его на сервере, на котором фактически выполнялась служба, в зависимости от того, на каком сервере она работает (Dev, QA,UAT, Prod, и т.Разумеется, каждый файл web.config был по-разному структурирован.
Я решил это с помощью регулярного выражения в сценарии установки PowerShell для сайтов, вот фрагмент:
(Get-Content $webConfig -Encoding UTF8) | `
ForEach-Object {$_ -replace 'localhost', "$dnsName" } | `
Set-Content $webConfig
Я запустил вышеизложенное внутрицикла, который проходил через каждый файл web.config в каждом каталоге, вносил изменения, затем сохранял файл с помощью командлета Set-Content.
Я могу понять, если у вас есть , чтобы сделатьв C # вы всегда можете просто открыть файл в виде потока, настроить несколько объектов Regex и выполнить по существу ту же операцию.
Me?Лично я ненавижу ходить XML, если я не вынужденВы, безусловно, можете сделать это таким образом, но если кто-то придет и переставит ваш файл web.config, он сломает ваш красиво созданный XML-ходок, и вы начнете все сначала.Таким образом, до тех пор, пока то, что вы меняете, не изменится (сильно), оно должно работать просто отлично.