如果您不愿意使用 app.config/web.config 或属性文件(Oded 和 Bruno 推荐,我也推荐),我强烈推荐这个实用程序:
Web Services Contract First (WSCF) Blue 用于 VS2008 和 VS2010
如果你使用的是 VS2005,你会想要这个版本的工具:http://www.thinktecture.com/resourcearchive/tools-and-software/wscf(不要在这个网站上使用 VS2008 版本。我永远无法让它正常工作。)
将插件安装到 Visual Studio 后,您将需要 XML 文件的 XSD 架构。 (Google for an online XSD Generator.) 按照 WSCF 网站上的说明,您可以生成一个包装类,它将反序列化和重新序列化您的 XML,并为您提供 XML 的抽象视图。
我认为添加新的节点/元素类型是不可能的(或者至少非常困难),但是添加现有节点/元素类型的新实例、访问您的数据、编辑数据、重新排序节点,然后保存回来出去都很容易。
反序列化代码如下:
private MyGeneratedXMLconfigClass config;
using (StreamReader sr = new StreamReader(filename))
{
XmlSerializer cXml = new XmlSerializer(typeof(MyGeneratedXMLconfigClass));
config = (MyGeneratedXMLconfigClass)cXml.Deserialize(sr);
}
现在您的 XML 已反序列化为自定义类的“配置”实例。然后,您可以将整个类作为一系列嵌套值和列表访问。
例如:
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 已更改,因此需要重新生成。
我想这听起来可能很多,但学习曲线实际上很容易,一旦安装并工作,你就会意识到它是多么简单。这很值得。我发誓。 :-)