Если вы не хотите использовать app.config / web.config или файл свойств (который рекомендуют и рекомендуют Одед и Бруно, а также рекомендую), я настоятельно рекомендую эту утилиту:
Первый контракт на веб-услуги (WSCF) Синий для VS2008 и VS2010
Если вы используете VS2005, вам понадобится эта версия инструмента: http://www.thinktecture.com/resourcearchive/tools-and-software/wscf (не используйте версию VS2008 на этом сайте. Я никогда не смогу заставить ее работать правильно.)
После установки плагина в Visual Studio вам понадобится XSD-схема вашего XML-файла. ( Google для онлайн-генератора XSD .) Следуя инструкциям на веб-сайте WSCF, вы можете сгенерировать класс-обертку, который будет десериализовывать и повторно сериализовывать ваш XML и давать вам абстрактное представление вашего XML.
Я полагаю, что невозможно (или, по крайней мере, очень сложно) добавить новые ТИПЫ узла / элемента, но добавляются новые экземпляры существующих типов узлов / элементов, доступ к вашим данным, редактирование данных, изменение порядка узлов, а затем сохранение назад все легко.
Код десериализации выглядит так:
private MyGeneratedXMLconfigClass config;
using (StreamReader sr = new StreamReader(filename))
{
XmlSerializer cXml = new XmlSerializer(typeof(MyGeneratedXMLconfigClass));
config = (MyGeneratedXMLconfigClass)cXml.Deserialize(sr);
}
Теперь ваш XML был десериализован в экземпляр "config" вашего пользовательского класса. Затем вы можете получить доступ ко всему классу как к последовательности вложенных значений и списков.
Например:
string errorFile = config.errorsFile;
List<string> actions = config.actionList;
var specialActions = from action in config.actionList
where action.contains("special")
select action;
И т. Д. И т. Д. Затем, как только вы закончите манипулировать вашими данными, вы можете повторно сериализовать этот код:
using (StreamWriter wr = new StreamWriter(filename, false))
{
XmlSerializer cXml = new XmlSerializer(typeof(MyGeneratedXMLconfigClass));
cXml.Serialize(wr, config);
}
Одна из самых приятных особенностей этого инструмента заключается в том, что он автоматически генерирует все классы как «частичные» классы, так что вы можете свободно расширять каждый класс самостоятельно, не опасаясь, что ваш код может сорваться в случае, если вы когда-либо нужно повторно генерировать, потому что XSD / XML был изменен.
Я полагаю, что это может звучать как много, но кривая обучения на самом деле довольно проста, и как только вы установите и работаете, вы поймете, насколько это глупо. Это стоит того. Я клянусь. : -)