Иногда мне хотелось бы узнать причину некоторых изменений API. Так как Google не помог мне с этим вопросом, возможно, StackOverflow может. Почему Microsoft решила удалить вспомогательный метод GetAttribute
для элементов XML? В мире System.Xml
до MSXML существовал XmlElement.GetAttribute ("x")
наподобие getAttribute
в MSXML, оба из которых возвращают либо значение атрибута, либо пустая строка при отсутствии. С XElement
есть SetAttributeValue
, но GetAttributeValue
не был реализован.
Конечно, не так уж много работы по изменению логики для тестирования и использования XElement Свойство .Attribute ("x"). Value
, но оно не так удобно и предоставляет функцию утилиты односторонним образом ( SetAttributeValue
), но не другим кажется странным. Кто-нибудь знает причины этого решения, чтобы я мог легко отдохнуть и, возможно, чему-то научиться?
Вы должны получить значение атрибута следующим образом:
var value = (TYPE) element.Attribute("x");
UPDATE:
Примеры:
var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");
и т.д.
См. эту статью: http://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx. То же самое работает для атрибутов.
Точно не знаю, в чем причина, но с помощью методов расширения C # вы можете решить проблему самостоятельно.
public static string GetAttributeValue(this XElement element, XName name)
{
var attribute = element.Attribute(name);
return attribute != null ? attribute.Value : null;
}
Позволяет:
element.GetAttributeValue("myAttributeName");