我正在使用静态类来存储从自定义XML文件中读取的设置的遗留应用程序。 但是,作为对模块进行轻微升级的一部分,客户希望在运行时查看缺少哪些字段。
考虑以下settings.xml文件:自定义XML文件的应用程序设置,加载和错误处理
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<configuration>
<API>
<log>
<type>09</type>
<location>C:\Test\Test.log</filename>
</log>
</API>
</configuration>
</appSettings>
的设置使用一个XMLReader(如下所示),当前读入静态类:
using (XmlTextReader xmlReader = new XmlTextReader("Settings.xml"))
{
xmlReader.ReadToFollowing("API");
xmlReader.ReadToFollowing("log");
xmlReader.ReadToFollowing("type");
this.logtype = xmlReader.ReadElementContentAsString();
//snip...
}
此相同的代码用于读取每每一个设置。一定有更好的方法。有什么办法可以将XML值读入每个相应的属性,并且如果它为空则会生成一个错误?
我试图设计静态设置类这样:
public static class Settings
{
private static string logtype
public static string LogType
{
get
{ return logtype; }
set
{ logtype = value; }
}
}
然后使用类似下面的“抢”的值:
public static void initSettings()
{
appSettings.LogType = read the configuration\API\log\type field from xml;
}
我敢肯定,我'd只是检查属性构造函数中的空字符,但我怎样才能从initSettings方法的'xml'部分读'configuration \ API \ log \ type字段?
任何原因您不仅仅是在标记为Serializable的Settings类上使用标准XML序列化?您可能需要对空属性进行一些额外的错误检查,但这也有些微不足道。 –
@WonkotheSane不幸的是,我对XML序列化的了解有限。你有链接到一个很好的教程? – TelJanini
只需Google即可获得“XML序列化C#”。如果我今晚有机会在这里举个例子,我会,但是网上有很多例子。 –