有时我想知道某些API更改的原因。由于谷歌没有帮助我解决这个问题,也许StackOverflow可以。为什么Microsoft选择删除XML元素上的GetAttribute
辅助方法?在System.Xml
世界中,之前在MSXML中有XmlElement.GetAttribute("x")
之类的getAttribute
,它们都会在缺失时返回属性值或空字符串。 XElement
SetAttributeValue
但GetAttributeValue
未实现。
当然,修改逻辑来测试和使用XElement.Attribute("x").Value
属性并不是太多工作,但它不是那么方便并且以一种方式提供效用函数(SetAttributeValue
)但是另一种看起来并不奇怪。有没有人知道决定背后的原因,以便我可以轻松地休息,也许可以从中学到一些东西?
答案 0 :(得分:16)
你应该得到这样的属性值:
var value = (TYPE) element.Attribute("x");
<强>更新强>
示例:
var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");
等
请参阅此文章:http://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx。同样适用于属性。
答案 1 :(得分:5)
不确定原因,但使用C#扩展方法,您可以自己解决问题。
public static string GetAttributeValue(this XElement element, XName name)
{
var attribute = element.Attribute(name);
return attribute != null ? attribute.Value : null;
}
允许:
element.GetAttributeValue("myAttributeName");