C# 是否';XmlDocument.CreateElement()';只创建一个元素?

C# 是否';XmlDocument.CreateElement()';只创建一个元素?,c#,xml,uwp,windows-store-apps,win-universal-app,C#,Xml,Uwp,Windows Store Apps,Win Universal App,它似乎只做一件事:创建元素。它并没有像我所期望的那样,作为一个孩子添加它,它似乎也没有做任何其他事情 但这没有多大意义。为什么要使用实例方法而不是静态方法创建元素?这表明它确实与实例有某种关系。但是我找不到任何东西,因此我提出了问题。Microsoft文档中的注释提到,默认属性是在返回的对象上创建的。名称空间可以根据XmlDocument的模式/默认值自动应用于新元素 它还声明必须手动将其添加到所需的父节点 从 请注意,返回的实例实现了XmlElement接口,因此将直接在返回的对象上创建默认属

它似乎只做一件事:创建元素。它并没有像我所期望的那样,作为一个孩子添加它,它似乎也没有做任何其他事情


但这没有多大意义。为什么要使用实例方法而不是静态方法创建元素?这表明它确实与实例有某种关系。但是我找不到任何东西,因此我提出了问题。

Microsoft文档中的注释提到,默认属性是在返回的对象上创建的。名称空间可以根据XmlDocument的模式/默认值自动应用于新元素

它还声明必须手动将其添加到所需的父节点

请注意,返回的实例实现了XmlElement接口,因此将直接在返回的对象上创建默认属性

尽管此方法在文档上下文中创建新对象,但它不会自动将新对象添加到文档树中。要添加新对象,必须显式调用其中一个节点插入方法


我认为该方法不会像您所期望的那样将元素作为子元素自动添加的原因是因为无法知道应该将元素添加到哪里。文档可能有很多子元素,并且没有任何东西可以指定所创建的元素应该添加到哪个元素。它不能在默认情况下将其添加到根元素,因为很有可能它并不总是理想的位置


如前所述,将其作为实例方法而不是静态方法的好处是在新创建的元素上自动创建默认属性(例如名称空间)。这样,创建名称空间后,只需将其添加到文档中的正确位置即可。

尽管您指的是不同的框架(请参阅我在问题中提供的链接),但我认为您关于名称空间的回答可能是正确的。对此表示抱歉-我没有注意到它链接到了不同的页面。我相信DOM应该是类似的,尽管我很遗憾在微软的网站上找不到更好的参考。