关于这两者区别网上很多版本,说的都是很沾边的,有的也很专业,但是理论方面不够本质。大部分都是说:
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");