Linq2Xml XAttribute层次结构位置?

时间:2012-03-24 15:36:22

标签: c# linq .net-4.0 linq-to-xml xattribute

我无法理解这一点:

enter image description here

为什么Microsoft将Xattribute放在Xobject下?

他们说:

  

属性不是从XNode派生的;它们不是XML中的节点   树。相反,它们只是与a相关联的名称/值对   元件。

罚款 ...使用元素。

那么为什么不在哪里画画?

3 个答案:

答案 0 :(得分:2)

属性属于元素。

使用继承意味着“属性 a(特殊种类)元素”,这显然是不正确的。例如,属性不能包含子项。

答案 1 :(得分:1)

树是一个继承树,它实际上并没有显示对象是如何一起使用的。

您建议的位置无法从继承的角度出发。元素可以具有子元素和属性,因此如果XAttribute是从XElement派生的,则意味着Attributes可以具有子元素和它们自己的属性。 XContainer也是如此,因此将XAttribute放在树中的XElement旁边也没有意义。

XNode是下一步。 XAttribute可以在XNode下适合吗?并不是的。当您查看XML时,从一般意义上讲,有两个基本结构元素,即节点和属性。两者都不是从另一个派生的,所以XAttribute和XNode在XObject树的不同分支上是有道理的。

只留下XObject,它是基本的Xml2Linq对象类型,并且所有内容都必须从它派生,因此这是XAttribute类型的最佳(也是唯一合适的位置)。

答案 2 :(得分:0)

这是一个继承树,XAttribute派生自XObject