2014-07-09 28 views
1
XmlDocument xmlDoc = new XmlDocument();   
XmlElement elem = xmlDoc.CreateElement("Elem"); 
xmlDoc.AppendChild(elem); 

AppendChild()做一些改变,由xmlDoc中引用的对象....很有道理它是一个成员函数为什么CreateElement()是XmlDocument类的成员函数?

CreateElement()这看起来更像是一个常见的功能,所有的对象....为什么它是一个成员函数()?

+0

我想这是因为内部新鲜创建的元素中的某些东西被初始化,特定于给定的XML文档。这是不可能的,如果它是静态的 - 或者你必须通过相应的'XmlDocument'实例。顺便说一下:您可以查看框架的源代码并亲自查看发生了什么。 –

回答

1

CreateElement方法使用XmlElementconstuctor,这需要XmlDocument作为构造则params的一个可能创建了一个新XmlElement

+1

当你可以[查看源代码](http://referencesource.microsoft.com/#System.Xml/Xml/System/Xml/Dom/XmlDocument.cs#890)时,为什么猜测或者用“很可能” –

+2

接下来的问题是:为什么XmlElement类需要XmlDocument参数?最后,设计决定是不应该有没有OwnerDocument的XmlElement。为什么这个决定可能只能由这个班的设计师回答。 – sloth

+0

这更多的是关于DOM规范,而不是关于作者的实现决定。例如:假设一个节点的所有子节点都属于同一个文档;一个子节点列表是一个实时列表,它反映了变化;默认属性值取决于文档;编辑:实体。所以,你不能从一个文档中选择一个元素并将其移动到另一个文档,你必须克隆它。 – acelent

相关问题