Мне все еще комфортно работать с XML-файлами. Я просмотрел несколько примеров в Интернете и был поражен отсутствием обработки ошибок.
Самая частая ошибка - это что-то вроде el.Attributes["name"].Value
. Поскольку XML редактируется человеком, возможно, что атрибут отсутствует. И попытка сослаться на свойство Value
на null
вызовет исключение. Другие проблемы могут быть связаны с данными, не имеющими ожидаемого формата.
Итак, я начал писать несколько вспомогательных методов расширения в следующих строках:
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 никогда не редактируются людьми. И по этой причине многие люди могут просто написать код, предполагающий, что ошибок не будет. Если есть ошибка, значит, есть исключение. Я могу понять, что. Но я надеялся дать своему приложению немного больше гибкости, если файлы редактируются людьми и что-то отформатировано неправильно.
XmlDocument
, иXDocument
имеютValidate
метод, который проверяет документ на соответствие указанной схеме. Это даст вам знать, прежде чем вы начнете работать с ним, есть ли в нем какие-либо ошибки (если у вас есть схема). - person Tim   schedule 30.06.2013