我正在使用靜態類來存儲從自定義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#」。如果我今晚有機會在這裏舉個例子,我會,但是網上有很多例子。 –