Наконец-то нашел!
Зачем?
Иногда встречаются задачи, для решения которых необходимо модифицировать, удалить или добавить некоторые атрибуты в XML файле.
Например, заменить connectionString в файле web.config и подобных конфигурационных файлах.
Иногда мне приходится отслеживать изменения в XML фалах, а для этого их необходимо привести в более удобный вид.
Решения
Я пишу скрипты на языке Perl, если необходимы более тонкие преобразования и работа с XML файлами. Для конфигурации билда перед запуском авто-тестов, у меня также есть подобные поиски и замены в файлах конфигурации на C#. Но, все это как-то заточено под конкретные файлы, и создавать универсальное решение не хотелось, но пришлось бы…
Пришлось бы, если бы я не нашел замечательный инструмент
XMLStarlet, который позволяет редактировать, валидировать, запрашивать данные из XML фала через командную строку.
Со всеми возможностями инструмента я еще не разобрался, да и не надо пока. Главное, что я нашел, как заменить значения строки подключения к базе данных. А делается это так:
xml ed -u "configuration/connectionStrings/add[@name='SqlServerDb']/@connectionString" -v "Data Source=SQL2008;Initial Catalog=testdb93;User ID=admin;Password=admin;MultipleActiveResultSets=True;" My.Database.config
Создав несколько bat-файлов, я теперь могу быстро переключать приложение на разные базы данных.
Домашняя страница XMLStarlet
Страница загрузки
З.Ы: Внутри архива есть хорошее руководство пользователя