我仍然習慣使用XML文件。我一直在看一些在線的例子,並且由於缺少錯誤處理而受到了打擊。解析XmlDocument時處理錯誤
最常見的錯誤類似el.Attributes["name"].Value
。由於XML是可編輯的,所以可能缺少該屬性。並嘗試引用null
上的Value
屬性將引發異常。其他問題將與數據不符合預期格式有關。
於是我開始寫一些輔助擴展方法大致如下的行:
public static class XmlHelpers
{
public static string GetValue(this XmlAttribute attr, string defaultValue = "")
{
if (attr != null)
return attr.Value;
return defaultValue;
}
public static bool GetValueBool(this XmlAttribute attr, bool defaultValue = false)
{
bool value;
if (bool.TryParse(attr.GetValue(), out value))
return value;
return defaultValue;
}
}
我知道這會工作。但我錯過了什麼? XmlDocument
是否已經提供了使這種類型的東西變得不必要的功能?我只是想知道別人怎麼處理這個問題。
我意識到很多XML文件都不會被人類編輯。而且,出於這個原因,許多人可能只是編寫假定沒有錯誤的代碼。如果有錯誤,那麼就有一個例外。我能理解這一點。但是,如果文件是由人類編輯的,我希望給我的應用程序更多的靈活性,而某些格式不正確。
如果您對LINQ感到滿意,我會建議轉向使用LINQ to XML(儘管您仍然對缺少元素/屬性或拼寫錯誤的名稱有相同的挑戰)。 – Tim
如果它不處理這些問題,爲什麼你建議轉移到LINQ to XML? –
這很容易(IMO),然後使用XmlDocument是主要原因。您可以使用幾行代碼解析,修改和創建XML文檔。 – Tim