代码之家  ›  专栏  ›  技术社区  ›  ispiro

没有“XmlDocument”。CreateElement();'是否仅创建元素?

  •  1
  • ispiro  · 技术社区  · 7 年前

    看起来像是 someXml.CreateElement("abc"); 只做一件事:创建元素。它并没有像我所期望的那样在孩子的时候添加它,它似乎也没有做任何其他事情。

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

    2 回复  |  直到 7 年前
        1
  •  3
  •   Wiz    7 年前

    Microsoft文档中的备注提到在返回的对象上创建默认属性。名称空间会出现在脑海中,因为它们可能会根据XmlDocument的模式/默认值自动应用于新元素。

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

    从…起 https://msdn.microsoft.com/en-us/library/fw1ys7w6(v=vs.110).aspx

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

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

        2
  •  0
  •   Developer Guy Adam    7 年前

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

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