C# XmlElement和XmlNode区别的准确解释

关于这两者区别网上很多版本,说的都是很沾边的,有的也很专业,但是理论方面不够本质。大部分都是说:

XmlElement是XmlNode的一部分,不是互换。
如果用XmlNode换XmlElement是可以的,但是如果
用XmlElement换XmlNode可能会发生错误,因为XmlNode不止包含XmlElement.

这是比较准确的,至于为什么这样说,我们现在看下他们之间的继承层级关系:

我们可以发现,XmlElement继承自XmlNode,根据继承观点:

备注:派生类对基类成员的访问

派生类可以访问基类的公共成员、受保护成员、内部成员和受保护内部成员。即使派生类继承基类的私有成员,仍不能访问这些成员。但是,所有这些私有成员在派生类中仍然存在,且执行与基类自身中相同的工作。例如,假定一个受保护基类方法访问私有字段。要使继承的基类方法正常工作,派生类中必须有该字段。 因此被派生类具有更多派生类的成员。

常用的代码:

<a b="1">  
     <c d="1">1</c>  
</a>  

XmlNode a;  
string   s   =   a.Attributes["b"].Value;  
   
XmlElement   a;  
string   s   =   a.GetAttribute("b");

原文地址:https://www.cnblogs.com/Leo_wl/p/1740229.html