Почему у XElement нет метода GetAttributeValue?

Иногда мне хотелось бы узнать причину некоторых изменений API. Так как Google не помог мне с этим вопросом, возможно, StackOverflow может. Почему Microsoft решила удалить вспомогательный метод GetAttribute для элементов XML? В мире System.Xml до MSXML существовал XmlElement.GetAttribute ("x") наподобие getAttribute в MSXML, оба из которых возвращают либо значение атрибута, либо пустая строка при отсутствии. С XElement есть SetAttributeValue , но GetAttributeValue не был реализован.

Конечно, не так уж много работы по изменению логики для тестирования и использования XElement Свойство .Attribute ("x"). Value , но оно не так удобно и предоставляет функцию утилиты односторонним образом ( SetAttributeValue ), но не другим кажется странным. Кто-нибудь знает причины этого решения, чтобы я мог легко отдохнуть и, возможно, чему-то научиться?

13
задан Mark Hurd 25 August 2012 в 08:19
поделиться

2 ответа

Вы должны получить значение атрибута следующим образом:

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. То же самое работает для атрибутов.

16
ответ дан 1 December 2019 в 22:38
поделиться

Точно не знаю, в чем причина, но с помощью методов расширения C # вы можете решить проблему самостоятельно.

public static string GetAttributeValue(this XElement element, XName name)
{
    var attribute = element.Attribute(name);
    return attribute != null ? attribute.Value : null;
}

Позволяет:

element.GetAttributeValue("myAttributeName");
5
ответ дан 1 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: